2018年4月29日日曜日

Springでlog4j2(Gradleでプロジェクト作成)

以前にSpringでlog4jをmavenの設定で使用するようにしたことがあったけど、今回はGraldeで行ってみる。

SpringでLog4j2

build.gradleファイルを開いて、log4j2を取り込む設定を記述する。

build.gradleの設定内容は次のとおり。
  1. buildscript {
  2.     ext {
  3.         springBootVersion = '1.5.13.BUILD-SNAPSHOT'
  4.     }
  5.     repositories {
  6.         mavenCentral()
  7.         maven { url "https://repo.spring.io/snapshot" }
  8.         maven { url "https://repo.spring.io/milestone" }
  9.     }
  10.     dependencies {
  11.         classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
  12.     }
  13. }
  14.  
  15. apply plugin: 'java'
  16. apply plugin: 'eclipse'
  17. apply plugin: 'org.springframework.boot'
  18.  
  19. group = 'com.example'
  20. version = '0.0.1-SNAPSHOT'
  21. sourceCompatibility = 1.8
  22.  
  23. repositories {
  24.     mavenCentral()
  25.     maven { url "https://repo.spring.io/snapshot" }
  26.     maven { url "https://repo.spring.io/milestone" }
  27. }
  28.  
  29.  
  30. dependencies {
  31.     compile('org.springframework.boot:spring-boot-starter-web') {
  32.         exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
  33.     }
  34.     compile('org.springframework.boot:spring-boot-starter-log4j2')
  35.     testCompile('org.springframework.boot:spring-boot-starter-test')
  36. }

build.gradleを選択したまま、コンテキストメニューを表示して、「Gradle」-「Refresh Gradle Project」をクリック。

src/main/javaを選択したまま、コンテキストメニューを表示して、「New」-「File」をクリック。

File name: に log4j2.xml を入力して「Finish」をクリック。

log4j2.xmlにログ出力の設定内容を記述する。

log4j2.xmlの設定は次のとおり。
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration status="OFF">
  3.     <Properties>
  4.         <Property name="app_name">hoge</Property>
  5.         <Property name="date">%d{yyyy-MM-dd HH:mm:ss.SSS}</Property>
  6.         <Property name="daily_log">logs/app_${app_name}_%d{yyyy-MM-dd}.log</Property>
  7.         <Property name="monthly_log">logs/app_monthly_${app_name}_%d{yyyy-MM}.log</Property>
  8.         <Property name="error_daily_log">logs/app_error_${app_name}_%d{yyyy-MM-dd}.log</Property>
  9.     </Properties>
  10.     <appenders>
  11.         <Console
  12.             name="Console"
  13.             target="SYSTEM_OUT"
  14.         >
  15.             <PatternLayout pattern="${date}, [${app_name}], [ %-5level ], %logger{10}, %msg %n" />
  16.         </Console>
  17.         <RollingFile
  18.             name="File"
  19.             fileName="logs/app.log"
  20.             filePattern="${daily_log}.gz"
  21.     >
  22.             <PatternLayout pattern="${date}, [${app_name}], [ %-5level ], %logger{10}, %msg %n" />
  23.             <Policies>
  24.                 <TimeBasedTriggeringPolicy />
  25.             </Policies>
  26.         </RollingFile>
  27.         <RollingFile
  28.             name="ErrorFile"
  29.             fileName="logs/app_error.log"
  30.             filePattern="${error_daily_log}.gz"
  31.         >
  32.             <RegexFilter regex="\[ ERROR \]" />
  33.             <PatternLayout pattern="${date}, [${app_name}], [ %-5level ], %logger{10}, %msg %n" />
  34.             <Policies>
  35.                 <TimeBasedTriggeringPolicy />
  36.             </Policies>
  37.         </RollingFile>
  38.         <RollingFile
  39.             name="MonthlyFile"
  40.             fileName="logs/app_monthly.log"
  41.             filePattern="${monthly_log}.gz"
  42.         >
  43.             <PatternLayout pattern="${date}, [${app_name}], [ %-5level ], %logger{10}, %msg %n" />
  44.             <Policies>
  45.                 <TimeBasedTriggeringPolicy />
  46.             </Policies>
  47.         </RollingFile>
  48.     </appenders>
  49.     <loggers>
  50.         <root level="info">
  51.             <appender-ref ref="Console" />
  52.             <appender-ref ref="File" />
  53.             <appender-ref ref="MonthlyFile" />
  54.             <appender-ref ref="ErrorFile" />
  55.         </root>
  56.     </loggers>
  57. </configuration>

前回の記事で作成したHogeController.javaにログ出力のコードを追加する。

SpringでHello world(Gradleでプロジェクト作成)

private static・・・、Logger.info("#index START")とimport文が追加になる。

HogeController.javaのソースは次のとおり。
  1. package com.example.hoge;
  2.  
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7.  
  8. @RestController
  9. public class HogeController {
  10.  
  11.     private static final Logger logger = LoggerFactory.getLogger(HogeController.class);
  12.  
  13.     @RequestMapping("/")
  14.     public String index() {
  15.         logger.info("#index START");
  16.         return "Hello World.";
  17.     }
  18. }

log4j2の設定が終わったので、Springを動かしてログ出力されているかを確認する。
プロジェクトを選択したまま、メニューバーの「Run」-「Run As」-「4 Spring Boot App」をクリック。

Hello World. の表示を前回同様に確認する。
プロジェクトを選択したまま、コンテキストメニューを表示して「Refresh」をクリック。

log4j2.xmlで設定したとおりに、logsフォルダが作成され、その下にログが出力されている。これでおわり。

0 件のコメント :

コメントを投稿