素人なので色々な人のサイトをミクスチャーしてみましょう
まずはeclipseを起動
プロジェクトを作成
必要ないけど動的Webアプリで作成
log4j2のファイルをダウンロード
以下のファイルをダウンロード
apache-log4j-2.22.0-bin.zip
3つのファイルを外部JARの追加を実施。
追加したファイル
log4j-1.2-api-2.22.0.jar
log4j-api-2.22.0.jar
log4j-core-2.22.0.jar
クラスフォルダを作成
作成理由:log4j2は「log4j2.xml」というファイルを読み込む。
それがない場合はデフォルトのファイルを読み込む。(どこにデフォルトファイルがあるかは不明)
明示的に設定しないとファイル出力またはログレベルによっては出力できない。(ifnoレベルなど)
ちなみに私は
log4jというディレクトリをsrcと同じレベルに作った。
その中に「log4j2.xml」というファイルを作成
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project>
<Configuration status="off">
<!-- Propertiesは、nameの値を変数として使える -->
<Properties>
<Property name="format1">%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %c{10} %m%n</Property>
<!-- ログのフォーマット
%dは日時。{}に日時の形式を指定
%tはスレッド名
%-6pはログレベル名称を左詰めで6文字分出力する。「debug」であれば後ろに空白1文字が追加される。
但し、%-3pとしても名称は削られず「debug」として出力される。%6と-をとると右づめになる。
%c{x}は,例えばロガー名がorg.apache.commons.Fooのとき%c{2}の場合、commons.Fooが出力される
%mはログメッセージ
%nは改行
-->
<Property name="logfile">./log/testlog.log</Property>
<Property name="logfile-archive">./log/testlog_%d{yyyy-MM-dd}-%i.log</Property>
</Properties>
<Appenders>
<!-- コンソールに出力する設定 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout>
<pattern>${format1}</pattern>
</PatternLayout>
</Console>
<!-- ファイルに出力する設定 -->
<RollingFile name="logfile001" append="true" fileName="${logfile}"
filePattern="${logfile-archive}">
<PatternLayout>
<pattern>${format1}</pattern>
</PatternLayout>
<Policies>
// 1kBに達したらローテーションのファイルを作成する
<SizeBasedTriggeringPolicy size="1KB"/>
</Policies>
// ローテーションのファイルは、3つ持つ
<DefaultRolloverStrategy max="3"/>
</RollingFile>
</Appenders>
<Loggers>
// trace以上のログを出力する
<Root level="trace">
<AppenderRef ref="Console" />
<AppenderRef ref="logfile001" />
</Root>
</Loggers>
</Configuration>
最後にソースコード
package log4;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test {
public static void main(String[] args) {
// ロガーを呼び出します
Logger logger = LogManager.getLogger("Logger");
// INFOを出力します
logger.info("INFOです");
//WARNを出力します
logger.warn("WARNです");
// ERRORを出力します
logger.error("ERRORです。");
}
}
実行
実行→javaアプリケーション
ログが以下に出力されていることを確認
C:\pleiades\2022-12\workspace\log4\log
2023/12/04 21:56:09.647 [main] INFO Logger INFOです
2023/12/04 21:56:09.653 [main] WARN Logger WARNです
2023/12/04 21:56:09.653 [main] ERROR Logger ERRORです。
わーい