Spring MVC + Logback SLF4jの例

spring-logback、width = 421、height = 142

このチュートリアルでは、Spring MVC Webアプリケーションでslf4jとhttp://logback.qos.ch/[ログバック]を設定する方法を説明します。

使用される技術:

  1. Spring 4.1.6.RELEASE

  2. ログバック1.1.3

  3. Maven 3またはGradle 2.0

  4. Tomcat 7

  5. Eclipse 4.4

ログバックフレームワークをセットアップするには、以下が必要です。

  1. spring-core`から commons-logging`を除外します.

  2. `JCL-over-slf4j`を介してJCLからSLF4jへのSpringのロギングをブリッジします.

  3. 依存関係としてログバックを含める

  4. src/main/resources`フォルダに logback.xml`を作成します

  5. 完了

1.ビルドツール

1.1 Mavenの場合

pom.xml

    <properties>
    <jdk.version>1.7</jdk.version>
    <spring.version>4.1.6.RELEASE</spring.version>
    <logback.version>1.1.3</logback.version>
    <jcl.slf4j.version>1.7.12</jcl.slf4j.version>
    </properties>

    <dependencies>

    <!-- 1. exclude commons-logging -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!- 2. Bridge logging from JCL to SLF4j-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${jcl.slf4j.version}</version>
    </dependency>

    <!-- 3. logback -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
    </dependency>

    <dependencies>

1.2 Gradle用

build.gradle

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'

repositories {
    mavenCentral()
}
//1. exclude commons-logging
configurations.all {
   exclude group: "commons-logging", module: "commons-logging"
}

dependencies {
   //2. bridge logging from JCL to SLF4j
    compile 'org.slf4j:jcl-over-slf4j:1.7.12'

   //3. Logback
    compile 'ch.qos.logback:logback-classic:1.1.3'

    compile 'org.springframework:spring-webmvc:4.1.6.RELEASE'
}

2.プロジェクトディレクトリ

src/main/resources`フォルダに logback.xml`を作成します

spring-mvc-logback、width = 499、height = 450

3. logback.xml

この `logback.xml`はすべてのログをコンソールに送ります。

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
        </Pattern>
        </layout>
    </appender>

    <logger name="org.springframework" level="debug" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>

    <logger name="com.mkyong.helloworld" level="debug" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>

    <root level="error">
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>

ログと同様に、他のアペンダー(ログ出力)については、次のリンクを参照してください://logging/logback-xml-example/[log.xml examples]、またはこのhttp://logback.qos.ch/manual/appenders.html[ログバックアペンダーガイド]

4.ログバックの例

WelcomeController.java

package com.mkyong.common.controller;

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

@Controller
public class WelcomeController {

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

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String welcome(Model model) {

        logger.debug("welcome() is executed, value {}", "mkyong");

        logger.error("This is Error message", new Exception("Testing"));

        model.addAttribute("msg", "Hello Spring MVC + Logback");
        return "welcome";

    }

}

5.デモ

リンク:#download[ソースコード]をダウンロードし、MavenまたはGradleで実行してください。

5.1 Maven

mvn jetty:run

5.2 Gradle

gradle jettyRun

コンソール

...

2015年6月19日午前21時53分33秒DEBUG osweb.servlet.DispatcherServlet  - 初期化サーブレット「ハローディスパッチャ」2015年6月19日午前21時53分33秒デバッグoswcsStandardServletEnvironment  - 最低検索順位で[servletConfigInitParams]PropertySource追加2015- 6月19日21時53分33秒デバッグoswcsStandardServletEnvironment  - 最低検索順位2015年6月19日21時53分33秒デバッグoswcsStandardServletEnvironmentと[servletContextInitParams]PropertySource追加 - 最低検索順位で追加[jndiProperties]PropertySourceを2015年6月19日21 :53:33 DEBUG oswcsStandardServletEnvironment  - 最低検索順位2015年6月19日午前21時53分33秒デバッグoswcsStandardServletEnvironmentと追加[systemProperties]PropertySource  - 最低検索順位2015年6月19日午前21時53分33秒で【systemEnvironment]PropertySource追加DEBUG oswcsStandardServletEnvironment  -  PropertySourcesでStandardServletEnvironment初期化

[servletConfigInitParams,servletContextInitParams,jndiProperties,systemProperties,systemEnvironment]

2015年6月19日9:53:33 PM org.apache.catalina.core.ApplicationContextログ
INFO:Spring FrameworkServletの初期化 'hello-dispatcher'
20
...
2015-06-19 21:53:45 DEBUG o.s.b.f.s.DefaultListableBeanFactory  - シングルトンBeanのキャッシュされたインスタンスを返す 'welcomeController'
2015-06-19 21:53:45 DEBUG o.s.web.servlet.DispatcherServlet  - [/spring-mvc-logback/]の最終変更値は-1です。
2015-06-19 21:53:45エラーc.m.c.controller.WelcomeController  - これはエラーメッセージです
java.lang.Exception:テスト
    com.mkyong.common.controller.WelcomeController.welcome(WelcomeController.java:21)[WelcomeController.class:na]    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)〜[na:1.7.0__65]    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)〜[na:1.7.0__65]    at sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)〜[na:1.7.0__65]    java.lang.reflect.Method.invoke(Unknown Source)〜[na:1.7.0__65]...

Both Spring and web application logging will be sent to the console.

Download Source Code

Download it – spring-mvc-logback-example.zip (6 KB)