Spring Boot ログ出力

log4j2のファイルにymlを利用してみた

前回は、log4j2のファイルにxmlファイルを利用していたが、今回はlog4j2のファイルにymlを利用してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

Spring BootのWEB画面上でlog4j2を利用してみた今回は、log4j2という、log4jの後継でパフォーマンスが大幅に改善されたライブラリを利用してコンソールとファイルにログ出力を行って...

サンプルプログラムの内容

今回のサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠のうち、「log4j2.yml」が新規で作成したプログラムで、「build.gradle」は変更したプログラムとなる。

build.gradleの内容は以下の通り。log4j2にymlを利用できるよう、「jackson-dataformat-yaml」「jackson-core」「jackson-databind」を追加している。

plugins {
	id 'org.springframework.boot' version '2.1.7.RELEASE'
	id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

configurations {
	//log4j2を利用するため、Spring BootデフォルトのLogbackを利用しないよう設定
	all*.exclude module : 'spring-boot-starter-logging'
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	compileOnly 'org.projectlombok:lombok:1.18.10'
	annotationProcessor 'org.projectlombok:lombok:1.18.10'
	compile files('lib/ojdbc6.jar')
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1'
	compile group: 'org.springframework.data', name: 'spring-data-commons-core', version: '1.1.0.RELEASE'
	//log4j2を利用するための設定
	compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.12.1'
	compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.12.1'
	//AOPを利用するための設定
	implementation 'org.springframework.boot:spring-boot-starter-aop'
	//log4j2の設定でymlファイルを利用するための設定
	compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.10.1'
	compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.10.1'
	compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.1'
}
株式会社ベアフォスターホールディングスでスキルチェンジできました私はこれまで、Javaを中心としたシステム開発を行ってきましたが、将来的には、Pythonを利用したAI(人工知能)開発を行いたいと思う...

log4j2.ymlの内容は以下の通り。前提条件の記事の「log4j2.xml」と同じ内容で、「log4j2.yml」に記載している。

Configuration:
  status: OFF
  Appenders:
    # コンソールログ出力設定
    Console:
      name: Console
      target: SYSTEM_OUT
      PatternLayout:
        Pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
    # ログファイル出力設定
    File:
      name: LogFile
      fileName: C:/work/logs/demo.log
      PatternLayout:
        Pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
  Loggers:
    # コンソールとファイルにログ出力をするための設定
    Logger:
      name: com.example.demo
      level: debug
      additivity: false
      # 複数のAppenderRefを紐付けるには先頭に「-」を付与
      AppenderRef:
        - ref: Console
        - ref: LogFile

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-log4j2-yml/demo

サンプルプログラムの実行結果

下記記事の「サンプルプログラムの実行結果」と同じ結果となる。

Spring BootのWEB画面上でlog4j2を利用してみた今回は、log4j2という、log4jの後継でパフォーマンスが大幅に改善されたライブラリを利用してコンソールとファイルにログ出力を行って...

要点まとめ

  • log4j2でymlを利用できるようにするには、build.gradleにライブラリ「jackson-dataformat-yaml」「jackson-core」「jackson-databind」を追加し、log4j2.xmlと同じ内容をymlファイルに記載すればよい。