选择logback的理由
logback与log4j的简单对比一下:
1.首先,对于同样的代码路径,logback使用起来更快。
2.logback原生实现了log4j的api,而log4j中间还需要一个转换层。
3.有更丰富的文档,支持xml的和group的配置。
4.对配置文件的在项目启动中,可以热加载。
5.可以自动对日志进行归档,可以对日志进行归档,可以自动压缩日志成为归档文件。
6.支持更多的过滤器和参数化输出。
操作
1.引入依赖xml
<!-- logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.22</version>
</dependency>
2.创建logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
<!--日志输入到控制台-->
<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="permission" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--<file>${catalina.home}/logs/permission.log</file>-->
<!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!--<FileNamePattern>${catalina.home}/logs/permission.%d{yyyy-MM-dd}.log.gz</FileNamePattern>-->
<!--</rollingPolicy>-->
<!--<layout class="ch.qos.logback.classic.PatternLayout">-->
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>-->
<!--</layout>-->
<!--</appender>-->
<!---->
<!--<logger name="xxx" level="INFO">-->
<!--<appender-ref ref="permission"/>-->
<!--</logger>-->
<!-- TRACE < DEBUG < INFO < WARN < ERROR -->
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
注:
由configuration
里面定义参数:scan、scanPeriod等
1.scan="true"
配置文件发生改变时会重新加载。
2.scanPeriod
设置时间间隔,当为scan="true"
时才会生效 。
例如:scanPeriod="60 seconds"
3.appender:日志输出形式,可以定义多个 。
STDOURT :标准化输出 class="ch.qos.logback.core.ConsoleAppender"
:控制台输出
标准日志格式输出:
<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>
解释:
%d{yyyy-MM-dd HH:mm:ss.SSS}:时间
[%thread]:进程
%-5level:级别从做显示5个宽度
%logger:日志名称
%msg%:具体的msg
自定义名字和路径记录日志:
<appender name="permission" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/permission.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${catalina.home}/logs/permission.%d{yyyy-MM-dd}.log.gz</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</layout>
</appender>
解释:
-
<file>${catalina.home}/logs/permission.log</file>
代表路径在Catalina.home的文件夹下面的logs文件夹下面打印出日志permission.log的日志。
2.其他的与上面相似
4.logger:日志,可以是类名,也可以是其他、名称,最后返回appender输出。
5.root:只能有一个,日志的级别:从小到大的排序:TRACE < DEBUG < INFO < WARN < ERROR
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
与appender联系起来