SpringBoot日志框架LogBack

logback记录器的属性

图片

图片

图片

图片

图片

依赖

SpringBoot天生集成了logback日志框架,因此想要输出日志,根本不用再引入多余的依赖

图片
图片

日志文件说明

appender-为日志输出目的地,log4提供的appender有以下几种

org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

layout–日志输出格式,log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

打印参数--Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:[%d{yyyy-MM-dd HH:mm:ss}]

%c 输出所属的类目,通常就是所在类的全名
%M 输出方法名
%L 输出在哪一行

%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”

%L 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:
Testlog4.main(TestLog4.java: 10 )
%m 输出代码中指定的消息

%r 输出自应用启动到输出该log信息耗费的毫秒数

例如这样写,信息一目了然

<layout class="ch.qos.logback.classic.PatternLayout">
    <pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】  输出信息:%m %n</pattern>
</layout>

图片

配置文件参考

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <!--控制台日志附加器,日志输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
        </layout>
    </appender>
    <!--文件日志附加器,日志输出到唯一的一个日志文件中(生产环境基本不会用)-->
    <appender name="tofile" class="ch.qos.logback.core.FileAppender">
        <!--日志输出的格式-->
        <encoder>
            <pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
        </encoder>
        <!--日志输出路径-->
        <file>C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider_onlyOne.log</file>
        <!--追加写,为false时会覆盖以前的日志-->
        <append>true</append>
    </appender>
    <!--按照时间维度对日志进行分割,但是对单个文件大小没有限制-->
    <appender name="rollFileByTime" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志输出的格式-->
        <encoder>
            <pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
        </encoder>
        <!--当天日志输出路劲-->
        <file>C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider-bytime.log</file>
        <!--日志滚动策略:每天生成一个用于归档-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--归档日志文件名字格式-->
            <fileNamePattern>C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider-bytime_%d{yyyy-MM-dd_HH-mm}.log
            </fileNamePattern>
            <!--归档日志文件滚动保存最近maxHistory个的日志-->
            <maxHistory>7</maxHistory>
            <!--所有日志文件最大上限,超过则删除时间最久远的日志文件-->
            <totalSizeCap>5GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <!--按照时间维度对日志进行分割,对单个文件大小有限制,超过则自动分割-->
    <appender name="rollFileByTimeAndSize" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志输出的格式-->
        <encoder>
            <pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
        </encoder>
        <!--当天日志输出路劲-->
        <file>C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider-byTimeAndSize.log</file>
        <!--日志滚动策略:每天生成一个用于归档-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--归档日志文件名字格式-->
            <fileNamePattern>
                C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider-byTimeAndSize_%d{yyyy-MM-dd_HH-mm}.%i.log
            </fileNamePattern>
            <!--归档日志文件滚动保存最近maxHistory个的日志-->
            <maxHistory>7</maxHistory>
            <!--所有日志文件最大上限,超过则删除时间最久远的日志文件-->
            <totalSizeCap>5GB</totalSizeCap>
            <!--单个日志文件最大限制-->
            <maxFileSize>50MB</maxFileSize>
        </rollingPolicy>
    </appender>

    <!-- 根日志 -->
    <root level="info">
        <!--开发环境使用-->
        <appender-ref ref="console"/>
        <!--生产环境使用,日志量较少-->
        <!--<appender-ref ref="rollFileByTime"/>-->
        <!--生产环境使用:日志量较大-->
        <!--<appender-ref ref="rollFileByTimeAndSize"/>-->
    </root>
</configuration>
posted @ 2022-11-20 20:19  天门道人  阅读(142)  评论(0编辑  收藏  举报