说说在 logback 中如何输出与主日志不同的独立业务日志文件

683 阅读1分钟

首先定义好 appender,然后定义一个 logger 节点,引用刚才定义的appender。logger 节点有以下三个属性,具体说明如下。

完整示例如下:

<appender name="interceptorTimeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender">

 <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->

 <File>${LOG_HOME}/xx/interceptor.log</File>

 <!--文件滚动模式-->

 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

 <!--日志文件输出的文件名,可设置文件类型为gz,开启文件压缩-->

 <FileNamePattern>${LOG_HOME}/xx/interceptor.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>

 <!--日志文件保留天数-->

 <MaxHistory>30</MaxHistory>

 <!--按大小分割同一天的-->

 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

 <maxFileSize>10KB</maxFileSize>

 </timeBasedFileNamingAndTriggeringPolicy>

 </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>

 <!--设置编码-->

 <charset>UTF-8</charset>

 </encoder>

 </appender>

 <logger name="com.xxx.xx" level="INFO" additivity="false" >

 <appender-ref ref="interceptorTimeFileOutput"/>

 </logger>

运行结果:


[35] logback的additivity="false" 与root关系