在项目推进中,如果说第一件事是搭建 Spring 框架的话,那么第二件事情就是在 Sring 基础上搭建日志框架,此篇文章是博主在学习过程中使用 Spring Boot 搭建项目时整合 Log4j2 日志的总结
共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF
机制:如果一条日志信息的级别大于等于配置文件的级别,就记录
Console 节点、File 节点、RollingFile 节点的子节点,指定输出格式,不设置默认为:%m%n
属性:
自定义日志格式:
%d{yyyy-MM-dd HH:mm:ss, SSS}: 日志生产时间,输出到毫秒的时间
%-5level: 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%p: 日志输出格式
%c: logger的名称(%logger)
%m : 日志内容, 即 logger.info("message")
%n: 换行符
%C: Java类名(%F)
%L: 日志输出所在行数
%M: 日志输出所在方法名
%l: 输出语句所在的行数, 包括类名、方法名、文件名、行数
%t: 表示线程名(%thread)
hostName: 本地机器名
hostAddress: 本地ip地址
log4j2.xml 的根节点,有两个属性,两个子节点
属性:
子节点:
Configuration 根节点的子节点,常见的有三种子节点:Console、File、RollingFile
Appenders 节点的子节点,用来定义输出到控制台的 Appender
属性:
子节点:
Appenders 节点的子节点,用来定义输出到指定位置的文件的 Appender,一般用来测试输出
属性:
子节点:
Appenders 节点的子节点,用来定义超过指定大小,自动删除旧的创建新的 Appender
属性:
子节点:
RollingFile 节点的子节点,决定日志事件能否被输出。过滤条件有三个值:ACCEPT (接受),DENY (拒绝) or NEUTRAL (中立)
属性:
RollingFile 节点的子节点,指定滚动日志的策略
子节点:
Configuration 根节点的子节点
子节点:
Loggers 节点的子节点
属性:
子节点:
属性:
子节点:
Spring Boot 默认是用 logback 的日志框架的,所以需要排除 logback,不然会出现 jar 依赖冲突的报错
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
在 resources 下新建 log4j2.xml 文件并写入以下内容:
log4j2-logs
patrick-blog-server
[%d{yyyy-MM-dd HH:mm:ss.SSS}] %p %t %c[%L] - %m %n
%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level} [%t] %highlight{%c{1.}.%M(%L)}: %msg%n%throwable
${LOG_HOME}/$${date:yyyy-MM}
%d{yyyy-MM-dd}
使用 lombok 可以省略构建 logger 实例的过程,用 @Slf4j 注解简化开发
@Slf4j
public class LogTest {
public static void main(String... args) {
log.error("Something is warning here");
}
}