2018年4月29日日曜日

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

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

SpringでLog4j2

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

build.gradleの設定内容は次のとおり。
buildscript {
    ext {
        springBootVersion = '1.5.13.BUILD-SNAPSHOT'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

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

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    }
    compile('org.springframework.boot:spring-boot-starter-log4j2')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

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

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

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

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

log4j2.xmlの設定は次のとおり。
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
    <Properties>
        <Property name="app_name">hoge</Property>
        <Property name="date">%d{yyyy-MM-dd HH:mm:ss.SSS}</Property>
        <Property name="daily_log">logs/app_${app_name}_%d{yyyy-MM-dd}.log</Property>
        <Property name="monthly_log">logs/app_monthly_${app_name}_%d{yyyy-MM}.log</Property>
        <Property name="error_daily_log">logs/app_error_${app_name}_%d{yyyy-MM-dd}.log</Property>
    </Properties>
    <appenders>
        <Console
            name="Console"
            target="SYSTEM_OUT"
        >
            <PatternLayout pattern="${date}, [${app_name}], [ %-5level ], %logger{10}, %msg %n" />
        </Console>
        <RollingFile
            name="File"
            fileName="logs/app.log"
            filePattern="${daily_log}.gz"
    >
            <PatternLayout pattern="${date}, [${app_name}], [ %-5level ], %logger{10}, %msg %n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
        <RollingFile
            name="ErrorFile"
            fileName="logs/app_error.log"
            filePattern="${error_daily_log}.gz"
        >
            <RegexFilter regex="\[ ERROR \]" />
            <PatternLayout pattern="${date}, [${app_name}], [ %-5level ], %logger{10}, %msg %n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
        <RollingFile
            name="MonthlyFile"
            fileName="logs/app_monthly.log"
            filePattern="${monthly_log}.gz"
        >
            <PatternLayout pattern="${date}, [${app_name}], [ %-5level ], %logger{10}, %msg %n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
    </appenders>
    <loggers>
        <root level="info">
            <appender-ref ref="Console" />
            <appender-ref ref="File" />
            <appender-ref ref="MonthlyFile" />
            <appender-ref ref="ErrorFile" />
        </root>
    </loggers>
</configuration>

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

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

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

HogeController.javaのソースは次のとおり。
package com.example.hoge;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HogeController {

    private static final Logger logger = LoggerFactory.getLogger(HogeController.class);

    @RequestMapping("/")
    public String index() {
        logger.info("#index START");
        return "Hello World.";
    }
}

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

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

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

0 件のコメント :

コメントを投稿