【Spring】 Spring Boot logback

以spring boot mvc 自带logback 为例
see more: https://www.cnblogs.com/wenbronk/p/6529161.html
对log中对方法有详细介绍: https://www.cnblogs.com/mingforyou/p/4246298.html
spring boot 自封装 logback https://www.jianshu.com/p/2e2466045406
高级用法 https://www.cnblogs.com/softidea/p/5642174.html
与spring boot 结合的典范 https://www.cnblogs.com/zhangjianbing/p/8992897.html

1、自定义输出格式

.properties 文件中不加自定义格式串中不加""

# %ex{full}  是输出异常 ,如果自定义中写了,ide 控制台就不会再打印异常 ,怎么说了,如浴春风,终于可以控制控制态的异常输出了
# %15.15 表示 右对齐,多了截取,少了填充
logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss:SSS} %magenta(${PID:- } ---) [%15.15thread] %clr(%-5level) %cyan(%-35logger{35}) : %msg %ex{full} %n"

2、lombok 注解@Slf4j 使用占位符格式化

log.error("hello {} {}","world","!");

3、自定义配置
Spring Boot 官方推荐优先使用带有 -spring 的文件名作为你的日志配置,所有配置文件名可以是logback-spring.xml,路径放置在与默认 spring boot .yaml 或.properties 文件同级即可,当然也可以在springboot配置文件中进行完全控制。以下是配置示例,有几个节点需要注意

  • 1、<root> 节点下 <appender-ref ref="FILE"/> 如果不写 ,也会生产log文件,只不过为空。要是<root> 为空,则控制台和log文件什么也不会输出
  • 2、定义格式化的输出字符串可用的有两个节点< encoder >< layout > ,encoder 再layout之后版本新加的,作用有两个,一是把事件也就是info,error...转换为byte数组,二是可以同时将字节输出文件。而layout不能将字符串输出文件。
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="/Users/nidazhong/projects/IdeaProjects/readinglist" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %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_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <logger name="com.xxx.aggregator" level="info" additivity="false">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </logger>    

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE"/>
    </root>
</configuration>

4、日志以文件形式保存
如果在logback.xml中以定义,则无需在springboot的配置文件中定义,这只是在一些不需要复杂的日志配置的时候使用

logging:
  file: mylog.log
  path: /Users/nidazhong/projects/IdeaProjects/readinglist/

5、颜色输出

    # spring boot 自带颜色转换 使用%clr(xxx)
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
“年轻时,我没受过多少系统教育,但什么书都读。读得最多的是诗,包括烂诗,我坚信烂诗早晚会让我邂逅好诗。” by. 马尔克斯
原文地址:https://www.cnblogs.com/jzsg/p/10882862.html