logback简介,配置及相关说明
程序员文章站
2022-03-05 08:17:17
...
写在前面的话:有简介(1)和具体logback.xml配置(2),配置里有详细说明
1.logback介绍
log4j大家都很熟悉,logback和log4j出自同一个作者,logback里有对log4j的封装,从某一方面来讲,logback和log4j的升级
1.1logback的主要模块(3个)
logback-access:以servlet容器集成,提供通过http来访问日志的功能。
这意味着第三方软件可以通过logback-access模块来访问logback里记录的日志logback-classic:是一个log4j的改良版本。并完整的实现了slf4j的api,这样我们就可以很方便的更换成其他日志系统
logback-core:为前两个模块提供基础服务。
2.配置文件及详细说明(看注释)
- logback输出哪些到哪里,输出什么级别在logger标签里定义
- 下面的appender标签:定义向某文件或控制台输出log信息
- 看注释吧?
ps:如要使用,只需将logger标签的name改你的就ojdk?
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 定时扫描配置看是否变化,60s -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 定义参数常量-->
<!-- 级别: TRACE<DEBUG<INFO<WARN<ERROR,以下为只记录debug级别以上的日志 -->
<property name="log.level" value="debug"></property>
<!-- 文件保留时间 -->
<property name="log.maxHistory" value="30"></property>
<!-- 文件存放路径 Tomcat实例根目录/logs/webapps -->
<property name="log.filePath" value="${catalina.base}/logs/webapps"></property>
<!-- log输出格式:时间 线程 级别 信息(package,类) -->
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"></property>
<!-- 向控制台输出 -->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!--debug-->
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>
<pattern>${log.filePath}/debug.log</pattern>
</file>
<!-- 滚动策略:基于时间滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天数 -->
<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 文件最大保存时间 -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!-- 输出格式,将日志信息转换成字符串,并以${log.pattern}格式输出到文件 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class = "ch.qos.logback.classic.filter.LevelFilter">
<!-- 仅接受DEBUG相关 -->
<level>DEBUG</level>
<!-- 匹配就ACCEPT -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配就DENY -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- INFO -->
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>
<pattern>${log.filePath}/info.log</pattern>
</file>
<!-- 滚动策略:基于时间滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天数 -->
<fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 文件最大保存数量 -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!-- 输出格式,将日志信息转换成字符串,并以${log.pattern}格式输出到文件 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class = "ch.qos.logback.classic.filter.LevelFilter">
<!-- 仅接受INFO相关 -->
<level>INFO</level>
<!-- 匹配就ACCEPT -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配就DENY -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- ERROR -->
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>
<pattern>${log.filePath}/error.log</pattern>
</file>
<!-- 滚动策略:基于时间滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天数 -->
<fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 文件最大保存数量 -->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!-- 输出格式,将日志信息转换成字符串,并以${log.pattern}格式输出到文件 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class = "ch.qos.logback.classic.filter.LevelFilter">
<!-- 仅接受ERROR相关 -->
<level>ERROR</level>
<!-- 匹配就ACCEPT -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配就DENY -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 一个类只能对应一个logger,若没有指定logger,就在根log里输出,以下因additivity="true",继承根log的appender-ref,所以也在控制台输出 -->
<!-- 对com.tl.o2o下所有log.level级别以上的文件的log起作用 additivity="true":继承根log的appender-ref -->
<logger name="com.tl.o2o" level = "${log.level}" additivity="true">
<appender-ref ref="debugAppender"/>
<appender-ref ref="infoAppender"/>
<appender-ref ref="errorAppender"/>
</logger>
<!-- 根log,若上面那个log未指定level,默默认为根log的level -->
<root level="info">
<appender-ref ref="consoleAppender"/>
</root>
</configuration>
推荐阅读