欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot配置logback日志

程序员文章站 2022-07-03 15:41:09
...

1、springboot默认使用logBack日志系统
2、springboot的logBack依赖spring-boot-starter-logging包
3、如果要定义日志配置文件,默认的名字为logback-spring.xml,默认要求放在resources文件夹下
4、如果使用springboot日志的基础配置,logging.file和logging.path不能同时使用,如果同时使用,则只有logging.file生效
如果只设置了logging.file,则会在当前路径下生成xxx.log文件
如果只设置了logging.path,则会在设置的路径下生成一个spring.log文件

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

<!--scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。-->
<!--scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。-->
<!--debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!--如果想读取spring配置文件中的属性(application.properties),可以使用标签springProperty,使用${name}来使用变量值-->
    <springProperty name="app.name" source="spring.application.name" defaultValue="mySpring"/>
    <springProperty name="log.path" source="log.path" defaultValue="/data/log"/>
    <!--用来定义变量值的标签,使用${name}来使用变量值-->
    <property name="log.file" value="${log.path}/${app.name}"/>
    <!--格式化输出:%d{yyyy-MM-dd HH:mm:ss.SSS}:表示日志输出时间    %thread:输出日志的进程名字     %-5level:级别从左显示5个字符宽度  %msg:日志消息    %n:是换行符-->
    <property name="normal-pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-20thread] %-5level %logger{50}:%L - %msg%n"/>
    <!--控制台输出可设置每个字段的颜色,方便本地调试查看-->
    <property name="colorful-pattern" value="%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green(【%thread】) %highlight(【%-5level】) %cyan(【%logger{50}:%L】) -- %boldMagenta(%msg%n)"/>

    <!--输出到控制台-->
    <appender name="consoleInfo" class="ch.qos.logback.core.ConsoleAppender">
        <!--ThresholdFilter为系统定义的拦截器,用来过滤掉DEBUG级别以下的日志不输出到文件中-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${colorful-pattern}</pattern>
        </layout>
    </appender>

    <!--输出到文件-->
    <appender name="fileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
            如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
            的日志改名为今天的日期。即,<File> 的日志都是当天的。-->
        <file>${log.file}.log</file>
        <append>false</append>
        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按照每天备份生成日志文件 %d可以包含一个时间格式,默认格式为yyyy-MM-dd  -->
            <fileNamePattern>${log.file}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--每个文件大小限制64M,超过设置fileNamePattern中的%i会自增(默认是10M)-->
                <maxFileSize>64MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--只保留最近90天的日志-->
            <maxHistory>90</maxHistory>
            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出-->
            <pattern>${normal-pattern}</pattern>
            <!--字符编码-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--level表示要打印日志的级别,addtivity表示消息是否向上级传递,默认为true-->
    <!--如果logger标签中没有指定appender,则此logger本身不打印任何日志,会将级别为info及其以上的日志消息传递给root-->
    <logger name="org.springframework" level="INFO" additivity="false"/>

    <root level="DEBUG">
        <appender-ref ref="consoleInfo"/>
        <appender-ref ref="fileInfo"/>
    </root>

</configuration>