Spring MVC + Logback SLF4jの例
このチュートリアルでは、Spring MVC Webアプリケーションでslf4jとhttp://logback.qos.ch/[ログバック]を設定する方法を説明します。
使用される技術:
-
Spring 4.1.6.RELEASE
-
ログバック1.1.3
-
Maven 3またはGradle 2.0
-
Tomcat 7
-
Eclipse 4.4
ログバックフレームワークをセットアップするには、以下が必要です。
-
spring-core`から
commons-logging`を除外します. -
`JCL-over-slf4j`を介してJCLからSLF4jへのSpringのロギングをブリッジします.
-
依存関係としてログバックを含める
-
src/main/resources`フォルダに
logback.xml`を作成します -
完了
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`を作成します
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)