在实际项目开发中,一般都是使用log打印日志到指定路径,生成文件,而平时使用的System.out.pring()只能输出日志到控制台。
当我们把项目打成war包部署到服务器上,会有不用的用户使用我们的应用,这个时候如果一个客户端出现了问题,那我们如果在控制台去找该用户抛出的异常或错误信息,是一件很难受,很麻烦的事情。为了解决这个问题,开发或维护人员能够迅速定位日志,我们实际的项目中的日志都是使用配置引入第三方jar包或者引入插件,从而将日志打印到我们制定的路径的文件夹中,生成 .log 文件。
这里的滚动策略是按照时间滚动的,每一天生成一个新的日志文件。
下面是文件logback-spring.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d - %msg%n
</pattern>
</layout>
</appender>
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>E:\Git\log\info/info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>E:\Git\log\error/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>
在pom.xml中添加一下依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
然后看一下测试类LoggerTest.java:
package com.imooc;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import lombok.extern.slf4j.Slf4j;
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {
// private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
@Test
public void test1(){
log.info("info....");
log.debug("debug....");
log.error("error....");
}
}
我们在这里使用了一个插件lombok,在idea和eclipse中都可以安装:
我这里一开始引入依赖之后报错,是因为没有配置编辑器的maven:
上面测试类中使用了lombok控件支持的一个注解@Slf4j,这个注解可以方便我们dao层的实现,省去了setter和getter方法,同时也方便了日志的输出,不用再每一个类中都 创建一个Logger对象,直接调用log方法就可以打印日志了,这个使用起来还是很方便的,我推荐使用这个注解和lombok插件。