Logback Manual


http://logback.qos.ch/manual/index.html新建springboot项目都要配置日志输出文件logback.xml,通过自定义配置文件来控制日志输出情况,通常我们会配置三个日志组件:

<configuration scan="true" scanPeriod="2 seconds">
    <!--定义日志文件的存储地址-->
    <property name="LOG_PATH" value="/home/iot/logs" />
    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,线程,%-5level:级别从左显示5个字符宽度,%t表示线程名,%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- info级别日志文件输出 -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件输出的文件名 -->
        <File>${LOG_PATH}/项目名-info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 每日生成日志文件或日志文件大小超出限制后输出的文件名模板 -->
            <fileNamePattern>${LOG_PATH}/项目名-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 日志文件保留天数 -->
            <maxHistory>30</maxHistory>
            <!-- 日志文件最大大小:100MB -->
            <maxFileSize>100MB</maxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- error级别日志文件输出 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志输出级别,优先级 > '<root level>' -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <File>${LOG_PATH}/项目名-error.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/项目名-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <maxFileSize>100MB</maxFileSize>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 默认日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>

</configuration>

logback 参数配置说明


  • configuration包含以下三个属性:

        scan:配置文件发生更改时,进行重载,默认值为true

        scanPeriod:监测配置文件是否有修改的时间间隔,默认值为6000,默认单位为毫秒

        debug:打印logback内部日志信息,实时查看logback运行状态,默认值为false

  • 子节点property(可以使${}来使用变量):
     定义变量值,包含以下两个属性

        name:变量名称

        value:变量定义的值

  • 子节点appender:

        是负责写日志的组件,通过自定义日志组件控制日志输出的情况,包含以下两个属性:

        name:组件名称
        class:组件class指定的类名

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

</appender>
ch.qos.logback.core.ConsoleAppender  #会把日志输出到控制台

ch.qos.logback.core.rolling.RollingFileAppender #把日志内容输出到指定文件
  • File节点:日志文件输出的文件名
  • filter节点:过滤器,用来指定日志组件的日志输出级别,优先级高于root节点的level。
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>ERROR</level>
</filter>
  • rollingPolicy节点:

        滚动日志文件配置,涉及日志文件的移动和重命名,只有一个class属性,用来指定滚动策略     

ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy

ch.qos.logback.core.rolling.TimeBasedRollingPolicy

        包含以下三个属性:  

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>${LOG_PATH}/项目名-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <maxHistory>30</maxHistory>
    <maxFileSize>100MB</maxFileSize>
</rollingPolicy>

        fileNamePattern:发生滚动时的日志命名方式
        maxHistory:日志文件的最大保留时间,超过设定时间后会自动删除
        maxFileSize:每份日志文件的最大限制,超出限制后会重新生成,并将旧的日志文件按照fileNamePattern设定的日志命名方式进行命名

  • 子节点encoder

        对记录事件进行格式化,负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。
        PatternLayoutEncoder 是唯一有用的且默认的encoder (可以不写) ,有一个 节点,用来设置日志的输入格式。使用“%”加“转换符”方式,如果要输出“%”,则必须用“”对“%”进行转义。

子节点root

        根loger,是所有loger的最上级,且只有一个level节点,用来设置打印日志的级别,默认值为debug、info、trace、warn、error、all、off级别。子节点appender-ref的ref属性指定日志组件名称,即appendername属性值。