spring boot 默认的日志框架为 logback ,在这里记录一下相关的配置,方便以后使用。
ALL:是最低等级的,用于打开所有日志记录。
TRACE:用于展现程序执行的轨迹
DEBUG:指出细粒度信息事件对调试应用程序是非常有帮助的。
INFO:表明 消息在粗粒度级别上突出强调应用程序的运行过程。
WARN:表明会出现潜在错误的情形。
ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行。
FATAL:指出每个严重的错误事件将会导致应用程序的退出。
OFF:是最高等级的,用于关闭所有日志记录。
一般的日志4种级别就足够了: DEBUG,INFO,WARN,ERROR
%d{yyyy-MM-dd HH:mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用%t 同 %thread
%-5level——日志级别,并且使用5个字符靠左对齐%line——输出日志所在的代码行数
%logger{36}——日志输出的类全包名,{36}最大显示长度
%msg——日志消息
%m 同 %msg
%n——平台的换行符${PID:-} ——进程号
logback默认读取的配置文件为:
logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
上面是默认的命名规则,并且放在src/main/resources下面即可。
如果你即想完全掌控日志配置,但又不想用logback.xml作为Logback配置的名字,可以在application.properties配置文件里面通过logging.config属性指定自定义的名字:
logging.config=classpath:logging-config.xml
配置文件的默认结构:
logback
%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
${log.path}/logback.%d{yyyy-MM-dd}.log
%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称。
logback
用来定义变量值的标签, 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。
………
${log.path}/logback.%d{yyyy-MM-dd}.log
ThresholdFilter 为系统定义的拦截器,level 是最低拦截的级别。低于此设置级别的日志不会输出。
例如我们用ThresholdFilter来过滤掉ERROR级别以下的日志不输出到文件中。如果不用记得注释掉,不然你控制台会发现没日志~
encoder 表示对日志进行编码
本地调试的时候,实时日志的高亮有助于快速排查问题,下面我们来说一下怎么配置彩色日志
……
……
${CONSOLE_LOG_PATTERN}
utf8
彩色日志的输出依赖于clr, 对于的 org.springframework.boot.logging.logback.ColorConverter
格式%clr(格式化日志数据){颜色值||样式}
%clr(%-5level){highlight}
可以查看 org.springframework.boot.logging.logback.ColorConverter源码
static {
Map ansiElements = new HashMap<>();
ansiElements.put("faint", AnsiStyle.FAINT);
ansiElements.put("red", AnsiColor.RED);
ansiElements.put("green", AnsiColor.GREEN);
ansiElements.put("yellow", AnsiColor.YELLOW);
ansiElements.put("blue", AnsiColor.BLUE);
ansiElements.put("magenta", AnsiColor.MAGENTA);
ansiElements.put("cyan", AnsiColor.CYAN);
ELEMENTS = Collections.unmodifiableMap(ansiElements);
}
常用的配置:因为容器化部署日志由运维收集,就取消了日志文件配置
TRACE
${CONSOLE_LOG_PATTERN}
utf8