spring boot 配置logback 2

spring boot 配置logback.xml

spring boot 默认的日志框架为 logback ,在这里记录一下相关的配置,方便以后使用。

版权声明:本文为CSDN博主「火冰鬼舞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dqfe123/article/details/127564578

日志级别

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默认读取的配置文件为:

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

默认结构

配置文件的默认结构:

<property name="log.path" value="/logs/txt" />

比如项目在D盘:D:\logs\txt\logback.2023-05-31.log
<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <property name="log.path" value="/logs/xxxx" />
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
       <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>-->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <!--输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>
 
    <!-- logback为java中的包 -->
    <logger name="com.xxx"/>
    <!--logback.LogbackDemo:类的全路径 -->
    <logger name="com.xxx.xxx.Test" level="WARN" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

contextName:设置上下文名称
每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称。

logback

property:设置变量

用来定义变量值的标签, 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。

<property name="log.path" value="/logs/xxxx" />
………
<fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern>

appender:子节点一
ThresholdFilter 为系统定义的拦截器,level 是最低拦截的级别。低于此设置级别的日志不会输出。

例如我们用ThresholdFilter来过滤掉ERROR级别以下的日志不输出到文件中。如果不用记得注释掉,不然你控制台会发现没日志~

encoder 表示对日志进行编码

彩色日志输出

本地调试的时候,实时日志的高亮有助于快速排查问题,下面我们来说一下怎么配置彩色日志

<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
 
……
 
<property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%-5level){highlight} PID:%clr(${PID:- }){magenta} [%clr(%15.15t){blue}] %clr(%-40.40logger{39}){cyan} [%clr(%5.5line){blue}]: %msg%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
 
……
 
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        <charset>utf8</charset>
    </encoder>
</appender>

彩色日志的输出依赖于clr, 对于的 org.springframework.boot.logging.logback.ColorConverter

格式%clr(格式化日志数据){颜色值||样式}

%clr(%-5level){highlight}

颜色值
可以查看 org.springframework.boot.logging.logback.ColorConverter源码

static {
		Map<String, AnsiElement> 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);
	}

常用的配置:因为容器化部署日志由运维收集,就取消了日志文件配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%-5level){highlight} PID:%clr(${PID:-}){magenta} [%clr(%15.15t){blue}] %clr(%-40.40logger{39}){cyan} [%clr(%5line){blue}]: %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
 
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>
 
    <!-- 减少启动日志,在获取注册中心的配置前的部分日志 -->
    <Logger name="org.hibernate.validator.internal.util.Version" level="ERROR"/>
    <logger name="com.alibaba.nacos" level="ERROR"/>
    <logger name="com.alibaba.cloud.nacos" level="ERROR"/>
    <Logger name="org.reflections.Reflections" level="ERROR"/>
</configuration>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值