LoginSignup
0
0

log4j2やってみよう

Posted at

素人なので色々な人のサイトをミクスチャーしてみましょう

まずは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です。

わーい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0