<?xml version="1.0" encoding="UTF-8"?> <!-- 根节点:configuration,包含以下三个属性 scan:当属性设置为true时,如果配置文件发生改变,将会被重新加载,默认true scanPeriod:设置监测配置文件是否修改的时间间隔,没有给出时间单位,默认单位毫秒,scan为true,属性生效,默认时间间隔为1分钟 debug:true,打印logback内部日志信息,实时查看logback运行状态,默认false 子节点: contextName:设置上下文名称,默认default property:定义变量值,存在name、value属性 timestamp:时间戳字符串,存在key、dataPattern(遵循java.txt.SimpleDataFormat格式)属性 appender:写日志组件,必要属性name、class,以下子节点详解 encoder:日志格式化 filter:过滤器 --> <configuration> <property name="LOG_HOME" value="./logs"></property> <property name="HISTORY_LOG_HOME" value="${LOG_HOME}/history"></property> <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5level] %logger{36} [%file:%line] - %msg%n"></property> <!--console log--> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%-5level:级别从左显示5个字符宽度,%t表示线程名,%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern> </encoder> </appender> <!--info log--> <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_HOME}/log.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${HISTORY_LOG_HOME}/%d{yyyy-MM}/log-%d{yyyy-MM-dd}.%i.zip</fileNamePattern> <maxHistory>30</maxHistory> <maxFileSize>200MB</maxFileSize> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${LOG_PATTERN}</pattern> </encoder> <Append>false</Append> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> </appender> <!--error log--> <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_HOME}/error.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${HISTORY_LOG_HOME}/%d{yyyy-MM}/error-%d{yyyy-MM-dd}.%i.zip</fileNamePattern> <maxHistory>5</maxHistory> <maxFileSize>100MB</maxFileSize> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${LOG_PATTERN}</pattern> </encoder> <Append>false</Append> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> </appender> <!--personalize appender start--> <appender name="startAppender" class="ch.qos.logback.core.FileAppender"> <File>${LOG_HOME}/start.log</File> <Append>false</Append> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>${LOG_PATTERN}</Pattern> </layout> <!-- <Append>false</Append>--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> </appender> <appender name="schedulerJobAppender" class="ch.qos.logback.core.FileAppender"> <File>${LOG_HOME}/job.log</File> <Append>false</Append> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>${LOG_PATTERN}</Pattern> </layout> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> </appender> <appender name="processAppender" class="ch.qos.logback.core.FileAppender"> <File>${LOG_HOME}/process.log</File> <Append>false</Append> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>${LOG_PATTERN}</Pattern> </layout> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> </appender> <!--personalize logger start--> <logger name="com.boco.nbd.wios.microservice.Application" level="INFO" additivity="false"> <appender-ref ref="startAppender"/> </logger> <logger name="com.boco.nbd.wios.task" level="INFO" additivity="false"> <appender-ref ref="schedulerJobAppender"/> </logger> <logger name="com.boco.nbd.wios.flow.process" level="INFO" additivity="false"> <appender-ref ref="processAppender"/> </logger> <root level="INFO"> <appender-ref ref="consoleAppender"/> <appender-ref ref="infoAppender"/> <appender-ref ref="errorAppender"/> </root> </configuration>