Spring MVC + Logback SLF4jの例

Spring MVC + Logback SLF4jの例

spring-logback

このチュートリアルでは、Spring MVC Webアプリケーションでslf4jとlogbackをセットアップする方法を示します。

使用される技術:

  1. 春4.1.6。リリース

  2. ログバック1.1.3

  3. Maven 3またはGradle 2.0

  4. Tomcat 7

  5. Eclipse 4.4

Note
デフォルトでは、SpringはJakarta Commons Logging API(JCL)を使用しています。thisを読み取ります。

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

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

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

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

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

  5. Done

1. ビルドツール

1.1 For Maven

pom.xml

    
    1.7
    4.1.6.RELEASE
    1.1.3
    1.7.12
    

    

    
    
        org.springframework
        spring-core
        ${spring.version}
        
          
            commons-logging
            commons-logging
          
        
    

    
        org.springframework
        spring-webmvc
        ${spring.version}
    

    
    
        org.slf4j
        jcl-over-slf4j
        ${jcl.slf4j.version}
    

    
    
        ch.qos.logback
        logback-classic
        ${logback.version}
    

    

1.2 For 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

3. logback.xml

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

logback.xml



    
        
        
            %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
        
        
    

    
        
    

    
        
    

    
        
    

ファイルへのログなど、他のアペンダー(ログ出力)については、このlog.xml examplesまたはこのlogback appender guideにアクセスしてください。

4. ログバックの例

WelcomeController.java

package com.example.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 {}", "example");

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

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

    }

}

5. Demo

source codeをダウンロードし、MavenまたはGradleで実行します。

5.1 Maven

mvn jetty:run

5.2 Gradle

gradle jettyRun

コンソール

...
2015-06-19 21:53:33 DEBUG o.s.web.servlet.DispatcherServlet - Initializing servlet 'hello-dispatcher'
2015-06-19 21:53:33 DEBUG o.s.w.c.s.StandardServletEnvironment - Adding [servletConfigInitParams] PropertySource with lowest search precedence
2015-06-19 21:53:33 DEBUG o.s.w.c.s.StandardServletEnvironment - Adding [servletContextInitParams] PropertySource with lowest search precedence
2015-06-19 21:53:33 DEBUG o.s.w.c.s.StandardServletEnvironment - Adding [jndiProperties] PropertySource with lowest search precedence
2015-06-19 21:53:33 DEBUG o.s.w.c.s.StandardServletEnvironment - Adding [systemProperties] PropertySource with lowest search precedence
2015-06-19 21:53:33 DEBUG o.s.w.c.s.StandardServletEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence
2015-06-19 21:53:33 DEBUG o.s.w.c.s.StandardServletEnvironment - Initialized StandardServletEnvironment with PropertySources

[servletConfigInitParams,servletContextInitParams,jndiProperties,systemProperties,systemEnvironment]
Jun 19, 2015 9:53:33 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'hello-dispatcher'
20
...
2015-06-19 21:53:45 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'welcomeController'
2015-06-19 21:53:45 DEBUG o.s.web.servlet.DispatcherServlet - Last-Modified value for [/spring-mvc-logback/] is: -1
2015-06-19 21:53:45 ERROR c.m.c.controller.WelcomeController - This is Error message
java.lang.Exception: Testing
    at com.example.common.controller.WelcomeController.welcome(WelcomeController.java:21) [WelcomeController.class:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_65]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_65]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_65]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.7.0_65]
...

SpringとWebアプリケーションの両方のログがコンソールに送信されます。

ソースコードをダウンロード

ダウンロード–spring-mvc-logback-example.zip(6 KB)