引(废)言(话)
本文的核心内容在于如何快速在maven项目中配置logback日志框架,使日志即输出在控制台,又以log文件的形式输出到本地磁盘保存。
1.logback的优点
logback日志框架的优点:
(1)内核重写,测试充分,初始化内存加载更小;
(2)logback非常自然地直接实现了slf4j;
(3)有比较齐全地200多页地文档;
(4)配置修改后,支持自定重新加载配置文件;
(5)支持自动去除旧的日志文件。
2.如何配置logback
第一步:在pom.xml中引入对logback的依赖,并指定scope为test。
<!-- logback日志框架-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<!-- 指定应用范围为test,在项目打包时不会出现此项依赖-->
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
<!-- 指定应用范围为test,在项目打包时不会出现此项依赖-->
<scope>test</scope>
</dependency>
第二步:配置logback.xml
这里提供一个配置,里面包含了比较详细的说明。代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 负责控制台日志输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 日志格式 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- 负责滚动记录日志文件 -->
<appender name="ROLLING-FILE-1" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 滚动策略采用TimeBasedRollingPolicy,每天一个文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名字,包含了日期 -->
<fileNamePattern>D:/loggingFiles/ssm_20190109_shopping/rolling-file-%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 保存近期30个月的日志文件 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<!-- 日志格式 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- 异步输出日志-->
<appender name ="ASYNC" class= "ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认值为20,表示如果队列还剩20%容量,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的容量,该值会影响性能.默认值为256 -->
<queueSize>256</queueSize>
<!-- 添加附加的appender,最多只能添加一个,且必须要添加一个,否则无法输出日志,因为AsyncAppender只作为一个缓存容器 -->
<appender-ref ref ="ROLLING-FILE-1"/>
</appender>
<!-- 这个root在这里用于日志文件异步输出,日志等级为INFO -->
<root level="INFO">
<!-- 指定“ASYNC”作为日志输出 -->
<appender-ref ref="ASYNC" />
</root>
<!-- 这个root在这里用于控制台输出 -->
<root level="DEBUG">
<!-- 指定“STDOUT”作为日志输出 -->
<appender-ref ref="STDOUT" />
</root>
</configuration>
3.测试
在完成上述配置后,我们打开任意的位于src/test/java包下的程序,控制台都会按照我们的logback配置输出日志信息,如下:
同时,在本地磁盘D:/loggingFiles/ssm_20190109_shopping路径下,我们可以看到自动生成的相应log文件:
大功告成!
PS:logback配置中还可以定义logger标签,其name指定java类或者包,然后日志输入相应类或者包下面的所有类的日志。