log4j
依赖:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
示例:
import org.apache.log4j.Logger;
public class Log4jTest {
private static Logger logger = Logger.getLogger(Log4jTest.class);
public static void main(String[] args) {
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");
// 记录debug级别的信息
logger.debug("This is debug message.");
}
}
Slf4j
示例:
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Slf4jTest {
public static void main(String[] args) {
// 记录info级别的信息
log.info("This is info message.");
// 记录error级别的信息
log.error("This is error message.");
// 记录debug级别的信息
log.debug("This is debug message.");
}
}
log4j、Slf4j+logback存放日志文件
示例:
log4j
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Log4jTest {
private static final Logger logger = LoggerFactory.getLogger("log4j-log");
@RequestMapping("/log4j")
void log4jInfo() {
// 记录info级别的信息
logger.info("This is log4j info message.");
// 记录error级别的信息
logger.error("This is log4j error message.");
// 记录debug级别的信息
logger.debug("This is log4j debug message.");
}
}
Slf4j
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j(topic = "Slf4j-log")
public class Slf4jTest {
@RequestMapping("/Slf4j")
void Slf4jInfo(){
// 记录info级别的信息
log.info("This is Slf4j info message.");
// 记录error级别的信息
log.error("This is Slf4j error message.");
// 记录debug级别的信息
log.debug("This is Slf4j debug message.");
}
}
logback-spring.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<!-- 引入application.yml中的属性值 -->
<springProperty name="springAppName" scope="context" source="spring.application.name" />
<property name="LOGS_HOME" value="D:/data/logs/${springAppName}" />
<property name="LOG4J_NAME" value="lof4j" />
<property name="SLF4J_NAME" value="Slf4j" />
<!-- 定义日志文件 输出格式 -->
<property name="MYFILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ${level:-%5p} [${springAppName:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] ${PID:- } --- [%t] %C:%L : %msg%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!-- 时间戳 -->
<timestamp key="FILE_PATH_DATE" datePattern="yyyyMMdd" />
<!-- 打在console中的日志 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${MYFILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 打在文件中的log4j日志 -->
<appender name="FILE-LOG4J" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_HOME}/log4j.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${MYFILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOGS_HOME}/%d{yyyy-MM-dd}/${LOG4J_NAME}_%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>10</MaxHistory>
<!--单个日志文件大小-->
<maxFileSize>20MB</maxFileSize>
<!--用来指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志 -->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 打在文件中的Slf4j日志 -->
<appender name="FILE-SLF4J" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_HOME}/slf4j.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${MYFILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOGS_HOME}/%d{yyyy-MM-dd}/${SLF4J_NAME}_%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>10</MaxHistory>
<!--单个日志文件大小-->
<maxFileSize>20MB</maxFileSize>
<!--用来指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志 -->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
<logger name="log4j-log" additivity="false" level="info">
<appender-ref ref="FILE-LOG4J"/>
</logger>
<logger name="Slf4j-log" additivity="false" level="info">
<appender-ref ref="FILE-SLF4J"/>
</logger>
<!-- root级别 INFO -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE-LOG4J" />
<appender-ref ref="FILE-SLF4J"/>
</root>
<!-- 配置特定logger的输出 -->
<logger name="org.springframework" level="INFO" />
</configuration>