Log4j導入

ログファイルの目的

主立った利用目的
プログラムなどの処理や動作の過程を記録する
セキュリティ確保のためにログオン・ログオフや操作のログを記録する
ユーザーに画面などの対話的な方法を用いて伝えることができないメッセージを伝達する
ほかのプログラムと連動する
プログラム内部の動きを調べる

手順

導入にはmavenを利用する

Pomを開き依存関係のタブを選択し追加を選択
Log4jで検索

org.apache.logging.log4jのlog4j-coreと
org.apache.logging.log4jのlog4j-apiを追加

log4j2.xmlの名前で設定ファイルを作成
src/main/resourcesなどクラスパスの通ったディレクトリに配置
以下設定例

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </appenders>
  <loggers>
    <root level="trace"> <-- ログレベルをtraceに設定している -->
      <appender-ref ref="Console"/>
    </root>
  </loggers>
</configuration>

設定内容について
・<Appenders> ~ </Appenders>
-ログ出力先の設定
・<Console> ~ </Console>
―標準出力にログを出力
・<File> ~ </File>
―ファイルにログを出力
・<RollingFile> ~ </RollingFile>
―ファイルにログを出力。ログローテーションをしてくれる。
・<Appenders> ~ </Appenders>の属性について
・name
―<Logger> ~ </Logger>の設定のときに、参照する名前
・target
―Consoleのログ出力先
―SYSTEM_OUTかSYSTEM_ERRを設定。デフォルトはSYSTEM_ERR
・fileName
―FileとRollingFileのログ出力先
・<PatternLayout> ~ </PatternLayout>
―ログ出力のフォーマット。pattern属性にフォーマットを設定する
・%d{DEFAULT}
―時間。%d{yyyy-MM-dd HH:mm:ss.SSS}のようにフォーマットを指定することもできる
・%t
―ログ出力を実行したスレッド名
・%-5level
―ログレベル
・%c{}
―ログ出力を実行したクラス名。{}内に数字を指定すると、呼び出し元クラスからのパッケージを何階層まで表示するか指定できる。コストの高い処理なのでパフォーマンスに影響を与えるらしい。
・%msg
―ログ内容
・<Loggers> ~ </Loggers>
―<Logger> ~ </Logger>の設定をする要素
・<Root> ~ </Root>
―RootLogger、全てのLoggerの親になるLogger
・level
―ログ出力のレベル
―ログレベルはTRACE < DEBUG < INFO < WARN < ERROR < FATALの順(デフォルトはERRORとFATALのみ)
・<Logger> ~ </Logger>
―個々のLoggerの設定
・name
―Loggerの名前
・<AppenderRef />
・ref
―ログ出力先の参照。<Appenders> ~ </Appenders>内で定義したname属性を指定する
サンプル

//以下のパッケージをインポートする
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

//ログ出力を行うコード
public class Main {
	private static final Logger L = LogManager.getLogger(Main.class.getName());
	public static void main (String[] args){
		L.trace("TraceMessage");
		L.debug("DebugMessage");
		//{}を出力する内容の中に埋め込むと、引数を展開してくれる。
		L.info("InfoMessage{}!","Hello log4j2");
		L.warn("WarnMessage{}!","Hello log4j2");
		L.error("ErrorMessage");
		L.fatal("FatalMessage");
	}
}

この記事を読んだ人は以下の記事も読んでいます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA