java日志系列全解
# 03.java日志之log4j的基础组件和各种Appender
# 07.java日志之logback内部状态数据Status
# 09.java日志之logback的appender标签及其子标签全解析
logback-dev.xml
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE configuration>
<configuration scan="true" packagingData="false" debug="false">
<property name="APP_NAME" value="app-demo"/>
<property name="LOG_HOME" value="home/log/app-demo"/>
<contextName>${APP_NAME}</contextName>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
</appender>
<appender name="CONSOLE_DEBUG" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c - %m%n%caller%n</pattern>
</encoder>
</appender>
<!-- File Rolling Appender -->
<appender name="FILE_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${APP_NAME}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 压缩模式.zip | .gz , WW 按周进行rollover-->
<FileNamePattern>
${LOG_HOME}/${APP_NAME}_%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
</rollingPolicy>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/${APP_NAME}_error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${APP_NAME}_error_%d{yyyy-MM-dd}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 压缩模式.zip | .gz , WW 按周进行rollover-->
<FileNamePattern>
${LOG_HOME}/${APP_NAME}_error_%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
</rollingPolicy>
</appender>
<Logger name="com.pkg.*.dao.mapper" level="DEBUG"/>
<root>
<level value="INFO"/>
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
logback-prod.xml
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE configuration>
<configuration scan="true" packagingData="false" debug="false">
<property name="APP_NAME" value="app-demo"/>
<property name="LOG_HOME" value="/home/log/app-demo"/>
<contextName>${APP_NAME}</contextName>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
</appender>
<appender name="CONSOLE_DEBUG" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c - %m%n%caller%n</pattern>
</encoder>
</appender>
<!-- File Rolling Appender -->
<appender name="FILE_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${APP_NAME}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 压缩模式.zip | .gz , WW 按周进行rollover-->
<FileNamePattern>
${LOG_HOME}/${APP_NAME}_%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
</rollingPolicy>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/${APP_NAME}_error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${APP_NAME}_error_%d{yyyy-MM-dd}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 压缩模式.zip | .gz , WW 按周进行rollover-->
<FileNamePattern>
${LOG_HOME}/${APP_NAME}_error_%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
</rollingPolicy>
</appender>
<Logger name="com.pkg.*.dao.mapper" level="DEBUG"/>
<logger name="org.springframework.amqp.rabbit.listener.BlockingQueueConsumer" level="WARN"/>
<logger name="org.springframework.core.task.SimpleAsyncTaskExecutor" level="WARN"/>
<root>
<level value="INFO"/>
<appender-ref ref="error"/>
<appender-ref ref="FILE_ROLLING"/>
</root>
</configuration>
logback-test.xml
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE configuration>
<configuration scan="true" packagingData="false" debug="false">
<property name="APP_NAME" value="app-demo"/>
<property name="LOG_HOME" value="/home/log/app-demo"/>
<contextName>${APP_NAME}</contextName>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
</appender>
<appender name="CONSOLE_DEBUG" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c - %m%n%caller%n</pattern>
</encoder>
</appender>
<!-- File Rolling Appender -->
<appender name="FILE_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${APP_NAME}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 压缩模式.zip | .gz , WW 按周进行rollover-->
<FileNamePattern>
${LOG_HOME}/${APP_NAME}_%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
</rollingPolicy>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/${APP_NAME}_error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${APP_NAME}_error_%d{yyyy-MM-dd}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%-5p %d{yyyy-MM-dd HH:mm:ss:SSS} - [%thread] %c{0} - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 压缩模式.zip | .gz , WW 按周进行rollover-->
<FileNamePattern>
${LOG_HOME}/${APP_NAME}_error_%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
</rollingPolicy>
</appender>
<Logger name="com.pkg.*.dao.mapper" level="DEBUG"/>
<logger name="org.springframework.amqp.rabbit.listener.BlockingQueueConsumer" level="WARN"/>
<logger name="org.springframework.core.task.SimpleAsyncTaskExecutor" level="WARN"/>
<root>
<level value="INFO"/>
<appender-ref ref="error"/>
<appender-ref ref="FILE_ROLLING"/>
</root>
</configuration>