概要:
logback的配置,需要配置输出源appender,打日志的loger(子节点)和root(根节点),实际上,它输出日志是从子节点开始,子节点如果有输出源直接输入,如果无,判断配置的addtivity,是否像上级传递,即是否向root传递,传递则采用root的输出源,否则不输出日志。
appender:
负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名,如ConsoleAppender 把日志输出到控制台,该组件常用子节点等。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
logger:
用来设置某一个包或具体的某一个类的日志打印级别、以及指定。仅有一个name属性,一个可选的level和一个可选的addtivity属性。
root:
它也是元素,但是它是根loger,是所有的上级。只有一个level属性,因为name已经被命名为"root",且已经是最上级了。
<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"/>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- <include resource="org/springframework/boot/logging/logback/base.xml"/> -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!-- 脱敏处理 -->
<conversionRule conversionWord="ds" converterClass="cn.marketin.crm.common.logback.DesensitizationConverter" />
<springProperty scope="context" name="LOGFILE" source="logging.file.path"/>
<property name="LOG_FILE_NAME" value="ma-api"/>
<!--每天生成日志的类-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 脱敏处理 -->
<encoder>
<charset>UTF-8</charset>
<pattern>%ds(${FILE_LOG_PATTERN})</pattern>
</encoder>
<file>${LOGFILE}/${LOG_FILE_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGFILE}/${LOG_FILE_NAME}.%d{yyyyMMdd}.%i.gz</fileNamePattern>
<maxFileSize>1GB</maxFileSize>
<maxHistory>360</maxHistory>
<totalSizeCap>50GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level> <!--//打印error-->
</filter>
<!-- 脱敏处理 -->
<encoder>
<charset>UTF-8</charset>
<pattern>%ds(${FILE_LOG_PATTERN})</pattern>
</encoder>
<file>${LOGFILE}/${LOG_FILE_NAME}.log.error</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGFILE}/${LOG_FILE_NAME}.%d{yyyyMMdd}.%i.error.gz</fileNamePattern>
<maxFileSize>1GB</maxFileSize>
<maxHistory>360</maxHistory>
<totalSizeCap>50GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="requestLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 脱敏处理 -->
<encoder>
<pattern>%ds(${FILE_LOG_PATTERN})</pattern>
</encoder>
<file>${LOGFILE}/${LOG_FILE_NAME}.request.date</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGFILE}/${LOG_FILE_NAME}.%d{yyyyMMdd}.%i.request.data</fileNamePattern>
<maxFileSize>1GB</maxFileSize>
<maxHistory>360</maxHistory>
<totalSizeCap>50GB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 3rdparty Loggers -->
<logger name="org.springframework">
<level value="info"/>
</logger>
<logger name="org.springframework.web.servlet">
<level value="info"/>
</logger>
<logger name="org.springframework.beans.factory.support.DefaultListableBeanFactory">
<level value="error"/>
</logger>
<logger name="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<level value="info"/>
</logger>
<logger name="org.springframework.http.client">
<level value="debug"/>
</logger>
<logger name="org.springframework.web.client">
<level value="debug"/>
</logger>
<!-- 引用requestLog打印请求信息记录 -->
<logger name="cn.marketin.crm.common.web.mvc.log" additivity="false" level="INFO">
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
<!-- 引用自定义的appender -->
<appender-ref ref="requestLog"/>
<!-- 这里也引用控制台appender,才能在控制台中看到我们的日志 -->
<appender-ref ref="CONSOLE"/>
</logger>
<!-- 项目的日志级别定义 -->
<logger name="cn.marketin.crm">
<level value="debug"/>
</logger>
<logger name="cn.marketin.crm.manager">
<level value="debug"/>
</logger>
<root level="INFO">
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>