Spring 利用logback输出打印日志:
2018-01-01 21:21
381 查看
Spring 利用logback输出打印日志:
一、pom.xml中添加相应的jar包:
1、首先由于logback的jar包与slf4j-log4j12冲突,所以先去掉相关的jar包:
<!--<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.16</version>
</dependency>-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.3.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>2.3.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.3.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
2、添加logback的相应jar包:
<!-- logback -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>0.9.29</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.29</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>0.9.29</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.2</version>
</dependency>
二、在web.xml中配置监听
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>/WEB-INF/config/logback.xml</param-value>
</context-param>
<listener>
<listener-class>
ch.qos.logback.ext.spring.web.LogbackConfigListener
</listener-class>
</listener>
三、将logback的配置文件logback.xml放在/WEB-INF/config/文件夹下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/opt/search/nimitzlogs" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志输出编码 -->
<Encoding>UTF-8</Encoding>
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</layout>
</appender>
<!-- 为了把不同的信息打印到不同的文件中,这里设置了不同的日志级别打印到不同文件中 -->
<appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<file>${LOG_HOME}/log-user.log</file>-->
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--用户行为操作的日志打印到以log-user开头的文件中 -->
<FileNamePattern>${LOG_HOME}/log-user.%d{yyyy-MM-dd}.log</FileNamePattern>
<!-- 最多30个文件 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] - %msg%n
</pattern>
</layout>
<!--日志文件最大的大小--><!-- xiaozhao 每天生成新文件 -->
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>30MB</MaxFileSize>
</triggeringPolicy>-->
<!-- 过滤器,只记录INFO级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<file>${LOG_HOME}/log-error.log</file>-->
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--在工程目录下自动生成logs文件夹 -->
<FileNamePattern>${LOG_HOME}/log-error.%d{yyyy-MM-dd}.log</FileNamePattern>
<!-- 最多30个文件 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] - %msg%n
</pattern>
</layout>
<!--日志文件最大的大小--><!-- xiaozhao 每天生成新文件 -->
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>30MB</MaxFileSize>
</triggeringPolicy>-->
<!-- 过滤器,只记录ERROR级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日志输出级别 输出INFO以上级别-->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILEINFO"/>
<appender-ref ref="FILEERROR"/>
</root>
<!-- 日志输出级别 -->
<logger name="org.springframework" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="FILEERROR" />
</logger>
<logger name="org.apache.solr" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="FILEERROR" />
</logger>
<logger name="net.paoding" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="FILEERROR" />
</logger>
<logger name="org.apache.commons" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="FILEERROR" />
</logger>
</configuration>
四、测试:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test {
private Logger log = LoggerFactory.getLogger(UsrController.class);
public String login(HttpServletRequest request) {
String username = request.getParameter("username");
String password = request.getParameter("password");
log.info("username:{} and pwd:{}", username, password);
return null;
}
}
一、pom.xml中添加相应的jar包:
1、首先由于logback的jar包与slf4j-log4j12冲突,所以先去掉相关的jar包:
<!--<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.16</version>
</dependency>-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.3.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>2.3.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.3.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
2、添加logback的相应jar包:
<!-- logback -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>0.9.29</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.29</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>0.9.29</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.2</version>
</dependency>
二、在web.xml中配置监听
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>/WEB-INF/config/logback.xml</param-value>
</context-param>
<listener>
<listener-class>
ch.qos.logback.ext.spring.web.LogbackConfigListener
</listener-class>
</listener>
三、将logback的配置文件logback.xml放在/WEB-INF/config/文件夹下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/opt/search/nimitzlogs" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志输出编码 -->
<Encoding>UTF-8</Encoding>
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</layout>
</appender>
<!-- 为了把不同的信息打印到不同的文件中,这里设置了不同的日志级别打印到不同文件中 -->
<appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<file>${LOG_HOME}/log-user.log</file>-->
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--用户行为操作的日志打印到以log-user开头的文件中 -->
<FileNamePattern>${LOG_HOME}/log-user.%d{yyyy-MM-dd}.log</FileNamePattern>
<!-- 最多30个文件 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] - %msg%n
</pattern>
</layout>
<!--日志文件最大的大小--><!-- xiaozhao 每天生成新文件 -->
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>30MB</MaxFileSize>
</triggeringPolicy>-->
<!-- 过滤器,只记录INFO级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<file>${LOG_HOME}/log-error.log</file>-->
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--在工程目录下自动生成logs文件夹 -->
<FileNamePattern>${LOG_HOME}/log-error.%d{yyyy-MM-dd}.log</FileNamePattern>
<!-- 最多30个文件 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] - %msg%n
</pattern>
</layout>
<!--日志文件最大的大小--><!-- xiaozhao 每天生成新文件 -->
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>30MB</MaxFileSize>
</triggeringPolicy>-->
<!-- 过滤器,只记录ERROR级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日志输出级别 输出INFO以上级别-->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILEINFO"/>
<appender-ref ref="FILEERROR"/>
</root>
<!-- 日志输出级别 -->
<logger name="org.springframework" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="FILEERROR" />
</logger>
<logger name="org.apache.solr" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="FILEERROR" />
</logger>
<logger name="net.paoding" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="FILEERROR" />
</logger>
<logger name="org.apache.commons" level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="FILEERROR" />
</logger>
</configuration>
四、测试:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test {
private Logger log = LoggerFactory.getLogger(UsrController.class);
public String login(HttpServletRequest request) {
String username = request.getParameter("username");
String password = request.getParameter("password");
log.info("username:{} and pwd:{}", username, password);
return null;
}
}
相关文章推荐
- springboot 配置logback控制台彩色打印,按等级输出日志文件
- Spring+logback实现日志输出
- spring 中使用 logback打印日志,替换其他日志如log4j,commons-logging
- log4j打印错误日志输出 利用sql取出的值放在list集合中,集合中的字段类型为映射类类型
- logback的使用和logback.xml详解,在Spring项目中使用log打印日志
- 利用spring AOP实现每个请求的日志输出
- SpringBoot入门系列之第二篇:logback日志输出
- spring-junit中使用 log4j或者logback 打印spring日志
- 利用spring AOP实现每个请求的日志输出
- 利用spring AOP实现每个请求的日志输出
- 利用SpringAOP 实现 日志输出
- SpringBoot使用logback输出日志并打印sql信息
- springboot中logback打印日志
- logback 日志打印输出
- [置顶] 使用logback随意控制spring源码相关包的日志输出
- spring boot配置logback日志输出
- spring 使用logback打印调试日志
- logback:输出日志到文件(滚动)&& Spring Boot干货系列:(七)默认日志logback配置解析(转载)
- SpringMVC 利用spring AOP实现每个请求的日志输出
- Mybtis与Spring结合使用Log4J打印日志/Sql到控制台