• 【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. 马尔克斯
  • 相关阅读:
    THINKPHP_(4)_TP模型中with、withJoin和多层关联的深入分析
    THINKPHP_(3)_TP6中实现多层关联,第一个表关联第二个表查询出的数据,再关联第三个表
    THINKPHP_(2)_TP模型的多表关联查询和多表字段的关键字搜索。
    THINKPHP_(1)_修改TP源码,支持对中文字符串按拼音进行排序。
    automapper 源中有多个属性类映射到同一个 目标中
    关于简单的 FluentValidation 验证
    关于SkyApm测试部署。
    linq2db.EntityFrameworkCore 介绍
    关于在CentOS上,绘图丢失部分中文字的问题
    NHibernate入门
  • 原文地址:https://www.cnblogs.com/jzsg/p/10882862.html
Copyright © 2020-2023  润新知