Log4j設定
上の本を読み直していて、log4jのlog4j.propetiesの内容があったのでコピーできるよう残します。
内容はおいおい確認します。
買った当初(8年前くらいかな)はよくわからなかったけど、仕事上JAVAをコーディングするようになったら、よくできた本だと再認識しました。
また、参照ライブラリに追加するjarは以下です。
log4j-1.2-api-2.14.0.jar
log4j-api-2.14.0.jar
log4j-core-2.14.0.jar
(追記)log4j.propetiesがlog4j 2では廃止になったそうです。
よってxml用のものを情報もとから引用しました。
ファイル名は 「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>サンプルコード
import org.apache.log4j.Logger;
public class Main {
private static final Logger logger = Logger.getLogger(Main.class);
public static void main(String[] args) {
int[] i = { 1, 2, 3, 4, 5 };
for (int ii : i) {
logger.info(ii);
}
}
}
