1. 所需jar包 maven
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
2. 完整简单logback配置
<configuration>
<jmxConfigurator/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-36thread] [%-5level] [%-36logger{36}] - token:[%X{token}] %msg%n
</pattern>
</encoder>
</appender>
<!-- INFO日志 -->
<appender name="FILE-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path:-logs}/${app.name}/info.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${log.path:-logs}/${app.name}/info-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
<MaxHistory>90</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-36thread] [%-5level] [%-36logger{36}] - token:[%X{token}] %msg%n
</pattern>
</encoder>
</appender>
<!--错误日志-->
<appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path:-logs}/${app.name}/err.log</file>
<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">
<FileNamePattern>${log.path:-logs}/${app.name}/err-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
<MaxHistory>90</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-36thread] [%-5level] [%-36logger{36}] - token:[%X{token}] %msg%n
</pattern>
</encoder>
</appender>
<!--单独指定日志级别 优先级高于全局-->
<logger name="com.wang" level="DEBUG"/>
<!-- 日志输出级别 全局日志级别-->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-ERROR"/>
</root>
</configuration>
3. 根标签,一级标签
<configuration> 根标签
<property name="key" value="value"/> 自定义变量key,值为value
<jmxConfigurator/> 启用jmx动态管理,可以配置jmx服务动态变更logback配置
<appender> 自定义日志输出
<logger> 包,类日志输出级别指定
<root> 全局日志输出级别指定
注意:logger指定的级别,优先级高于root级别。
4. 日志级别说明
常用级别从低到高排列:
1. debug
2. info
3. warn
4. error
日志输出遵循:小于等于规则,即,指定某级别为日志输出条件,那么小于等于该级别的日志都将被输出。
若需控制,可用filter。
5. appender 简略说明
说明性描述
<appender name="自定义别名" class="系统实现appender类">
<file>初始生成日志文件地址</file>
<filter class="系统实现过滤类">
<level>过滤标识级别</level>
<onMatch>ACCEPT</onMatch> 符合过滤策略执行 ACCEPT 代表通过(输出日志)
<onMismatch>DENY</onMismatch> 不符合过滤策略执行 DENY 代表不通过(不输出日志)
</filter>
<rollingPolicy class="系统实现日志备份策略类">
<FileNamePattern>
日志备份文件名称格式指定
</FileNamePattern>
<MaxHistory>90</MaxHistory> 最大备份天数
<TimeBasedFileNamingAndTriggeringPolicy class="系统备份循环实现类">
<MaxFileSize>100MB</MaxFileSize> 单文件最大容量
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="系统实现日志格式化类">
<pattern>
日志格式化字符串
</pattern>
</encoder>
</appender>
简单demo
<appender name="FILE-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path:-logs}/${app.name}/info.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${log.path:-logs}/${app.name}/info-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
<MaxHistory>90</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>100MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>
[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-36thread] [%-5level] [%-36logger{36}] - token:[%X{token}] %msg%n
</pattern>
</encoder>
</appender>
6. 字符串特殊标识说明
${} 代表取对应系统环境变量名,若不存在填充xx_IS_UNDEFINED
${xx:-yy} 代表若xx环境变量名不存在,则值为yy
%d 默认格式日期,或 %d{日期格式} 指定日期格式
%thread 当前线程名
%level 当前日志级别
%logger 当前执行日志类全名 包含package
%X{} 取MDC存储对应变量名
%msg 当然日志提示信息
%n 换行
%i 数字
-左对齐
-36 左对齐 最少36个字符
-36.36 左对齐 最少36,最大36