传递变量:在前三个<property>属性中。
控制日志级别:在第三个变量传入级别,然后结合末尾处的<root>实现控制,传入info时,只有info、warn、error会有内容,传入warn则只有warn、error会有内容,以此类推。
输出格式自定义:在<appender name="FILE_DEBUG"> ====》 <encoder> =====》 <pattern>中指定。
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--自定义变量,可通过命令行传递:日志位置-->
<property name="LOG_HOME" value="" />
<!--自定义变量,可通过命令行传递-->
<property name="SELF_BLOCK" value="" />
<!--自定义变量,可通过命令行传递:root 日志级别-->
<property name="LOG_LEVEL" value="" />
<!--控制台日志, 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<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>
</encoder>
</appender>
<!--debug 级别 文件日志,专门用来输出每个图层的日志内容 按照每天生成日志文件 -->
<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${SELF_BLOCK}/debug/tdt-tile.debug.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxFileSize>10MB</maxFileSize>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!-- <totalSizeCap>20GB</totalSizeCap>-->
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>{msg:%msg}%n</pattern>
</encoder>
<!--记录info级别-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>debug</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--info 级别 文件日志, 按照每天生成日志文件 -->
<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${SELF_BLOCK}/info/tdt-tile.info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxFileSize>10MB</maxFileSize>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!-- <totalSizeCap>20GB</totalSizeCap>-->
</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>
</encoder>
<!--记录info级别-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--error 级别 文件日志, 按照每天生成日志文件 -->
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${SELF_BLOCK}/error/tdt-tile.error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxFileSize>10MB</maxFileSize>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!-- <totalSizeCap>20GB</totalSizeCap>-->
</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>
</encoder>
<!--记录error级别-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--warn 级别 文件日志, 按照每天生成日志文件 -->
<appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${SELF_BLOCK}/warn/tdt-tile.warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxFileSize>10MB</maxFileSize>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!-- <totalSizeCap>20GB</totalSizeCap>-->
</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>
</encoder>
<!--记录warn级别-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>warn</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--mybatis log configure-->
<!-- <logger name="com.apache.ibatis" level="TRACE"/>-->
<!-- <logger name="java.sql.Connection" level="DEBUG"/>-->
<!-- <logger name="java.sql.Statement" level="DEBUG"/>-->
<!-- <logger name="java.sql.PreparedStatement" level="DEBUG"/>-->
<!-- <logger name="com.tdt.tile.clip" level="INFO" />-->
<logger name="org.mongodb.driver.connection" level="WARN"></logger>
<logger name="org.mongodb.driver" level="OFF"></logger>
<logger name="com.jfqqqqq.test.log.LayerCostLogger" level="${LOG_LEVEL}">
<appender-ref ref="FILE_DEBUG" />
</logger>
<root level="${LOG_LEVEL}">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE_DEBUG"/>
<appender-ref ref="FILE_INFO"/>
<appender-ref ref="FILE_WARN"/>
<appender-ref ref="FILE_ERROR"/>
</root>
</configuration>