logback配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logback配置相关的知识,希望对你有一定的参考价值。
logback配置Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。
一、LogBack、Slf4j和Log4j之间的关系
Slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。Slf4j作为应用层的Log接入时,程序可以根据实际应用场景动态调整底层的日志实现框架(Log4j/LogBack/JdkLog…)
LogBack和Log4j都是开源日记工具库,LogBack是Log4j的改良版本,比Log4j拥有更多的特性,同时也带来很大性能提升。
LogBack官方建议配合Slf4j使用,这样可以灵活地替换底层日志框架。
二、 LogBack的结构
LogBack被分为3个组件,logback-core, logback-classic 和 logback-access。
其中logback-core提供了LogBack的核心功能,是另外两个组件的基础。
logback-classic则实现了Slf4j的API,所以当想配合Slf4j使用时,需要将logback-classic加入classpath。
logback-access是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口。
三、LogBack配置
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--scan="true":配置文件若发生改变,会自动重新加载配置问价
scanPeriod="60 seconds" :当scan为true时,此属性生效。60 seconds表示每分钟扫描配置文件看看是否有变化
debug="false":若为true,将会打印logback内部的日志信息 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 定义四个全局变量 -->
<!-- logback日志级别(从小到大):TRACE<DEBAGE<INFO<WARN<ERROR -->
<property name="log.level" value="debug"/> <!-- 日志级别 -->
<property name="log.maxHistory" value="30"/> <!-- 最大的历史保留时间,这里为30天 -->
<property name="log.filePath" value="${catalina.base}/logs/webapps"/> <!-- 日志存储的根路径 -->
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%n"/> <!-- 日志展现的格式 -->
<!-- %d{yyyy-MM-dd HH:mm:ss.SSS}:时间格式
[%thread]:程序是由哪一个线程执行的
%-5level:显示日志界别。-5表示缩进5位显示
%logger{50}-%msg:某一个类里面输出的相关信息
%n:换行 -->
<!-- 控制台设置 -->
<!--appender标签:日志输出的位置配置
name="consoleAppender":名字
class="ch.qos.logback.core.ConsoleAppender:引入类"
-->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder标签指定输出格式 -->
<encoder>
<pattern>${log.pattern}</pattern> <!-- log的输出格式,按照上面的log.pattern格式输出-->
</encoder>
</appender>
<!-- debug -->
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file >${log.filePath}/debug.log</file><!-- 文件路径,log.filePath是上面定义的路径 -->
<!-- 滚动策略 -->
<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>
<!-- encoder标签指定输出格式 -->
<encoder>
<pattern>${log.pattern}</pattern><!-- log的输出格式,按照上面的log.pattern格式输出-->
</encoder>
<!-- 过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level> <!-- 只记录debug级别的日志信息 -->
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch> <!-- 若不是debug级别日志,则过滤掉 -->
</filter>
</appender>
<!-- INFO -->
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file >${log.filePath}/info.log</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>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- error -->
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file >${log.filePath}/error.log</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>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--
name:指定扫描的包
level:只记录哪一个级别以上的日志
additivity="true":会把父类(下面的root标签)中的内容包括进来,即也会在控制台输出-->
<logger name="cn.qiuuuu" level="${log.level}" additivity="true">
<!-- 与上面三个appender绑定 -->
<appender-ref ref="debugAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="errorAppender" />
</logger>
<!-- -->
<root level="info">
<appender-ref ref="consoleAppender" /><!-- 与上面的appender绑定,控制台输出 -->
</root>
</configuration>
以上是关于logback配置的主要内容,如果未能解决你的问题,请参考以下文章