logback.xml详解

介绍之前博文有专门介绍过基于Log4j Appender 实现大数据平台组件日志的采集, 本篇主要对java项目中经常会接触到的logback.xml文件的配置做一个介绍和总结.
logback.xml 配置下面是一个logback配置demo, 常用的配置都有, 一一介绍下每个配置的作用.
<?xml version="1.0" encoding="UTF-8"?><configuration> <property name="LOG_HOME" value="d:/opt/module/logs" /> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%msg%n</pattern></encoder> </appender> <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/app.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.log</fileNamePattern></rollingPolicy><encoder><pattern>%msg%n</pattern></encoder> </appender> <!-- 将某一个包下日志单独打印日志 --> <logger name="com.bigdata.logger.LoggerExample" level="INFO" additivity="false"><appender-ref ref="rollingFile" /><appender-ref ref="console" /> </logger> <root level="error" additivity="false"><appender-ref ref="console" /> </root></configuration>配置说明:

  • property定义属性,类似全局变量, 比如上面我们定义的LOG_HOME 日志写入路径文件路径,下面的appender 可以直接引用
  • appender追加器,描述如何写入到文件中(写在哪,格式,文件的切分)ConsoleAppender--追加到控制台RollingFileAppender--滚动追加到文件encoder: 对日志进行格式化 。rollingPolicy:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名.TimeBasedRollingPolicy 是根据时间制定滚动策略,fileNamePattern:文件输出格式
  • logger控制器,描述如何选择追加器注意:要是单独为某个类指定的时候,要修改类的全限定名appender-ref: 引用前面定义的appenderlevel="error": 定义输出的日志级别, 低于此日志级别的日志不会输出additivity="false":这个稍微不太好理解, 下面我写个代码, 实操下.
  • 日志级别TRACE->DEBUG ->INFO -> WARN ->ERROR -> FATAL从左到右, 由到高
  • root根级别日志
实战code项目结构:
logback.xml详解

文章插图
maven 配置:
<dependencies><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.6</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.6</version></dependency></dependencies>测试代码:
public class LoggerExample {private static final Logger logger = LoggerFactory.getLogger(LoggerExample.class);public static void main(String[] args) {logger.info("Example log from {}", LoggerExample.class.getSimpleName());logger.error("Error log");}}直接运行的结果:
logback.xml详解

文章插图
console和app.log文件的结果一样
修改 additivity="true
<logger name="com.bigdata.logger.LoggerExample" level="INFO" additivity="true">再次运行结果:
logback.xml详解

文章插图

logback.xml详解

经验总结扩展阅读