首先了解一下常见的日志框架都有哪些:
左边是接口,右边是实现类。我们采用排除法来选择适合我们的框架。
(1)对于jboss-logging来说,这个框架的诞生就不是用来服务大众的。
(2)对于JUL实现的过于简单,框架比较简陋。
(3)对于Log4j2的设计思想过于超前,很多技术不兼容。
(4)SLF4j、Log4g、Logback的作者是同一个人,作者说了Log4j的框架太烂,自己已经不想改了,所以才写了Logback,而SLF4j和Logback同一个作者,而springboot中也是用的SLF4j和Logback。
所以本次日志架选择SLF4j和Logback。
我们的日志需求是什么?
1、区分info和error日志。
2、每天产生一个日志文件,存在本地。
第一步:在resource中创建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">
<!--根据范围过滤,是ERROR过滤,不是的话使用该规则-->
<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>/日志信息文件/var/log/tomcat/sell/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>/日志信息文件/var/log/tomcat/sell/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!--引入日志配置,ROOT下整个项目都适用-->
<root level="info">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>
第二步:测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class LoggerTest {
private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
@Test
public void test1(){
logger.debug("in debug......");
logger.info("in info........");
logger.error("in error..........");
}
}
输出结果为:
可以根据自己的需求配置日志的xml,不过值得一提的是日志的级别,跳进源码中看一看:
public enum Level {
ERROR(40, "ERROR"),
WARN(30, "WARN"),
INFO(20, "INFO"),
DEBUG(10, "DEBUG"),
TRACE(0, "TRACE");
默认的级别是info,越往上日志级别越高,所以如果想要输出debug日志,需要将level设置为debug。