前言
常见的日志框架我们可以分类为「日志门面」和「日志实现」
日志门面:JCL、SLF4j、jboss-logging
日志实现:Log4j、Log4j2、Logback、JUL
最后我选择「SLF4j + Logback」
使用
基本实现
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerTest {
// #+o => level(org.slf4j.event) => 查看日志级别
private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
public void test() {
String name = "daioo";
String password = "123456";
logger.debug("debug...");
logger.info("name: " + name + " ,password: " + password);
logger.info("name: {}, password: {}", name, password);
logger.error("error...");
logger.warn("warn...");
}
}
推荐使用
Lombok库提供了一些注解来简化java代码
为了编程快捷,我更推荐这种。
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LoggerTest {
public void test() {
String name = "daioo";
String password = "123456";
log.debug("debug...");
log.info("name: " + name + " ,password: " + password);
log.info("name: {}, password: {}", name, password);
log.error("error...");
log.warn("warn...");
}
}
pom.xml的maven配置需要添加如下
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
Logback的配置
基于java spring 框架
application.yml
logging:
pattern: "%d - %msg%n" # 输出格式
file: /var/log/tomcat/dai.log # 输出文件
level: # 输出级别,可精确到文件
hyperdai.com.LoggerTest: debug
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>/var/log/tomcat/daioo/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/daioo/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>
参考
logback 配置详解
lombok @Slf4j注解
SpringBoot使用logback实现日志按天滚动
logback的使用和logback.xml详解