SpringBoot LogBack日志配置
SpringBoot默认使用的是LogBack日志,只需引入spring-boot-starter或者spring-boot-starter-web依赖即可使用LogBack
resources目录下新建 logback-spring.xml文件
文件具体配置如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> <property name="LOG_HOME" value="/logs"/> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}-[%thread] - %clr(%-5.5p) - %clr(%-50.60logger{50}){cyan} - %-4.4L - %clr(%8X{token}){yellow} - %msg%n pattern> <charset>UTF-8charset> encoder> appender> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFOlevel> <onMatch>ACCEPTonMatch> <onMismatch>DENYonMismatch> filter> <encoder> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]-[%thread]- %-5level - %-50.60logger{50} - %msg%npattern> <charset>UTF-8charset> encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/java_api.%d{yyyy-MM-dd}.logfileNamePattern> <MaxHistory>30MaxHistory> <cleanHistoryOnStart>truecleanHistoryOnStart> rollingPolicy> appender> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERRORlevel> <onMatch>ACCEPTonMatch> <onMismatch>NEUTRALonMismatch> filter> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARNlevel> <onMatch>ACCEPTonMatch> <onMismatch>DENYonMismatch> filter> <encoder> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]-[%thread]- %-5level - %-50.60logger{50} - %msg%npattern> <charset>UTF-8charset> encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.logfileNamePattern> <MaxHistory>30MaxHistory> <cleanHistoryOnStart>truecleanHistoryOnStart> rollingPolicy> appender> <logger name="jdbc.sqltiming" level="debug"/> <logger name="com.ibatis" level="debug"/> <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="debug"/> <logger name="com.ibatis.common.jdbc.ScriptRunner" level="debug"/> <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="debug"/> <logger name="java.sql.Connection" level="debug"/> <logger name="java.sql.Statement" level="debug"/> <logger name="java.sql.PreparedStatement" level="debug"/> <logger name="java.sql.ResultSet" level="debug"/> <logger name="org.springframework" level="warn"/> <logger name="org.mybatis.spring" level="warn"/> <logger name="org.apache.commons" level="warn"/> <logger name="org.apache.http" level="warn"/> <logger name="org.apache.commons.beanutils.converters" level="warn"/> <logger name="org.hibernate" level="warn"/> <logger name="org.apache.catalina.core.ContainerBase" level="warn"/> <logger name="springfox.documentation" level="warn"/> <springProfile name="dev"> <root level="DEBUG"> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO_FILE"/> <appender-ref ref="ERROR_FILE"/> root> springProfile> <springProfile name="test"> <root level="DEBUG"> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO_FILE"/> root> springProfile> <springProfile name="prod"> <root level="DEBUG"> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO_FILE"/> root> springProfile> configuration>
filter过滤器
ch.qos.logback.classic.filter.LevelFilter 级别过滤器,根据日志级别进行过滤
通过OnMatch和OnMissMatch来处理日志
OnMatch:
ACCEPT 匹配日志级别则立即被记录
DENY 匹配日志级别则立即抛弃日志,且不经过下一个过滤器
NEUTRAL 匹配日志级别则丢给下一个过滤器来处理
OnMissMatch:
ACCEPT 不匹配日志级别则立即记录日志
DENY 不匹配日志级别则立即抛弃日志,且不经过下一个过滤器
NEUTRAl 不匹配日志级别则丢给下一个过滤器来处理
还有其他的一些过滤器如下
ch.qos.logback.classic.filter.ThresholdFilter 临界值过滤器,过滤掉低于指定临界值的日志
ch.qos.logback.core.filter.EvaluatorFilter 求值过滤器,评估、鉴别日志是否符合指定条件