在本教程中,我们将向您介绍如何设置和SLF4J 的logback在Spring MVC的Web应用程序。
使用的技术:
- 春天4.1.6.RELEASE
- 登入1.1.3
- Maven 3或Gradle 2.0
- 雄猫7
- Eclipse 4.4
注意
默认情况下,Spring是使用雅加达共享日志记录API(JCL),请阅读此 。
要设置logback框架,您需要:
- 从
spring-core
排除commons-logging
- 通过
jcl-over-slf4j
将Spring的日志从JCL桥jcl-over-slf4j
- 包括logback作为依赖
- 在
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>
对于其他附加程序(日志输出),例如记录到文件的日志,请访问此log.xml示例或此logback附加程序指南
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.演示
下载源代码 ,然后使用Maven或Gradle运行它。
5.1 Maven
mvn jetty:run
5.2摇篮
gradle jettyRun
访问URL: http:// localhost:8080 / spring-mvc-logback
Console
...
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.mkyong.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)
参考文献
翻译自: https://mkyong.com/spring-mvc/spring-mvc-logback-slf4j-example/