使用spring-boot框架(还不用boot你就落伍了!)
使用slf4j+logback打印日志
1.控制台打印
原生使用logback的工厂类进行打印
默认是info级别,在level类中,只有比当前级别高才会有日志打印
后续在配置文件中会说明如何更改默认级别
使用lombok三方可以自动帮我们注册log对象(就是少些下面这行代码)
private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
这里是配置
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
带参打印最好使用这种占位格式的打印:
log.info("name: {},password: {}", name, password);
2.文件打印
我们在线上的项目需要将文件打印到本地,而且最好是一天一打印,这里就需要我们对logback进行更细化的配置
在application.yml中(如果是properties后缀的话直接改后缀为yml即可)配置:
%d:打印时间
%msg:打印信息
%n: 换行
file生成日志打印文件位置,自己选择一个目录即可,生成如下文件
这样还是不能满足我们的需求,每日打印需要我们进行更细化的配置,这里使用xml的配置方式配置:
spring约定我们在resources目录下创建一个logback-spring的xml文件,文件内容配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!--logback的xml标签提示很不友好,建议直接复制一份改改即可-->
<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">
<!--过滤器是为了只拦截error日志,当匹配时就拒绝,当不匹配的时候就通过-->
<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>/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>
<!--配置哪些appender需要打印-->
<root level="info">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>
errorlog
infolog