LoginSignup
16
29

More than 5 years have passed since last update.

SpringBootでログを出力する

Last updated at Posted at 2018-04-17

SpringBootでログを実装します

SpringBootを使うとログも簡単に実装できます

1.構成

sample-logger
│  build.gradle
└─src
    └─main
        ├─java
        │  └─com
        │      └─ccc
        │          │  SamplePrj02LogApplication.java
        │          │  ServletInitializer.java
        │          ├─common
        │          │      LogUtils.java
        │          └─local
        │                  HeloController.java
        └─resources
            │  application.properties
            │  logback.xml
            ├─static
            └─templates
                    index.html

2.依存関係

build.gradle
dependencies {
    compile('org.springframework.boot:spring-boot-starter-thymeleaf')
    compile('org.springframework.boot:spring-boot-starter-web')
    runtime('org.springframework.boot:spring-boot-devtools')
    compileOnly('org.projectlombok:lombok')
    providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

3.ログの設定ファイル

resorceの下にlogback.xmlを配置します

logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <timestamp key="LOG_DATE" datePattern="yyyyMMdd"/>
    <property name="LOG_FILE" value="C:/springboot/log/HeloController.log" />
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <fileNamePattern>${LOG_FILE}.%d{yyyyMMdd}</fileNamePattern>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
    </appender>
    <root level="TRACE">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

fileNamePattern
ログファイル名の後ろに日付をつけてログをローテーションします。
maxHistory
5つのバックアップを作成するように設定します。

4.ログ出力クラス

ログ出力のユーティリティクラスを作成します。

LogUtils.java
package com.ccc.common;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogUtils {
    protected final static Logger logger = LoggerFactory.getLogger(LogUtils.class);
    public static void info(String msg) {
        logger.info(msg);
    }
    public static void warn(String msg) {
        logger.warn(msg);
    }
    public static void error(String msg) {
        logger.error(msg);
    }
    public static void debug(String msg) {
        logger.debug(msg);
    }
    public static void trace(String msg) {
        logger.trace(msg);
    }
}

5.Controller
Webアプリケーション実行時にログを出力します

HeloController.java
package com.ccc.local;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.ccc.common.LogUtils;

@Controller
public class HeloController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Model model) {
        model.addAttribute("message", "Hello Springboot");
        LogUtils.trace("トレースログです");
        LogUtils.debug("デバッグログです");
        LogUtils.info("情報ログです");
        LogUtils.warn("警告ログです");
        LogUtils.error("エラーログです");
        return "index";
    }
}

6.HTML
ログを出力することが目的なのでViewはなんでもよい。HelloWorldを表示しています

index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Hello</title>
        <meta charset="utf-8" />
    </head>
    <body>
        <h1>Springboot Hello Sample</h1>
        <p>
            <span th:text="${message}"></span>!!!
        </p>
    </body>
</html>

7.実行してログが出力されることを確認します
Springbootを実行して、URLにアクセスします
http://localhost:8080/

helloworld.png

8.ログを確認します。
ログが出力されました
log.png

16
29
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
16
29