1.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来访问日志的功能。
2.logback配置
2.1 创建一个xml文件(logback.xml)
创建一个logback.xml文件,用于进行logback日志的配置
2.2 创建configuration标签
<?xml version="1.0" encoding="UTF-8"?>
<!-- 告诉logback,定期扫描配置是否发生变化,发生变化后,自动加载进来,每隔60秒扫描一次 -->
<configuration scan="true" scanPeriod="60 seconds"
debug="false">
</configuration>
2.3 创建四个全局变量
%d{yyyy-MM-dd HH:mm:ss.SSS} :时间格式
[%thread]:输出是哪一个线程执行的
%-5level :左移五位输出是哪一个级别的日志
%logger{50}-%msg:输出是哪一个package下面的信息
%n:换行
<!-- 定义参数常量 -->
<!-- 日志级别:TRACE<DEBUG<INFO<WARN<ERROR -->
<property name="log.level" value="debug" />
<!-- 文件保留时间 -->
<property name="log.maxHistory" value="30" />
<!-- 日志文件根路径 -->
<!-- ${catalina.base}:存储的是tomcat实例的根目录 -->
<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" />
2.4 配置四个日志输出=>appender
2.4.1 配置输出到控制台
<!-- 用来定义输出介质是什么,输出到那个地方 控制台设置 -->
<appender name="consoleAppender"
class="ch.qos.logback.core.ConsoleAppender">
<!-- 将event事件转化为字符串并输出到相应的文件中 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
2.4.2 配置DEBUG,输出到日志文件
<!-- DEBUG -->
<appender name="debugAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${log.filePath}/debug.log</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>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 过滤掉不是debug level的日志,只记录debug的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismach>DENY</onMismach>
</filter>
</appender>
2.4.3 配置INFO,输出到日志文件
<!-- 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>
<onMismach>DENY</onMismach>
</filter>
</appender>
2.4.4 配置ERROR,输出到日志文件
<!-- 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>
<onMismach>DENY</onMismach>
</filter>
</appender>
2.5 配置logger标签,监听配置
<!-- 用来存放日志对象,同时告诉logback需要关注哪个包下面的日志信息,以及关注哪个级别以上的日志信息 -->
<!-- additivity="true" :将日志也写在控制台上 -->
<logger name="com.cn.xcc" level="${log.level}"
additivity="true">
<!-- 和文件相关的appender进行绑定 -->
<appender-ref ref="debugAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="errorAppender" />
</logger>
2.6 配置root标签
<!-- 配置输出到控制台的appender -->
<root level="info">
<appender-ref ref="consoleAppender" />
</root>
3.配置汇总
<?xml version="1.0" encoding="UTF-8"?>
<!-- 告诉logback,定期扫描配置是否发生变化,发生变化后,自动加载进来,每隔60秒扫描一次 -->
<configuration scan="true" scanPeriod="60 seconds"
debug="false">
<!-- 定义参数常量 -->
<!-- 日志级别:TRACE<DEBUG<INFO<WARN<ERROR -->
<property name="log.level" value="debug" />
<!-- 文件保留时间 -->
<property name="log.maxHistory" value="30" />
<!-- 日志文件根路径 -->
<!-- ${catalina.base}:存储的是tomcat实例的根目录 -->
<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" />
<!-- 用来定义输出介质是什么,输出到那个地方 控制台设置 -->
<appender name="consoleAppender"
class="ch.qos.logback.core.ConsoleAppender">
<!-- 将event事件转化为字符串并输出到相应的文件中 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- DEBUG -->
<appender name="debugAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${log.filePath}/debug.log</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>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 过滤掉不是debug level的日志,只记录debug的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismach>DENY</onMismach>
</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>
<onMismach>DENY</onMismach>
</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>
<onMismach>DENY</onMismach>
</filter>
</appender>
<!-- 用来存放日志对象,同时告诉logback需要关注哪个包下面的日志信息,以及关注哪个级别以上的日志信息 -->
<!-- additivity="true" :将日志也写在控制台上 -->
<logger name="com.xsl.o2o" level="${log.level}"
additivity="true">
<!-- 和文件相关的appender进行绑定 -->
<appender-ref ref="debugAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="errorAppender" />
</logger>
<!-- 配置输出到控制台的appender -->
<root level="info">
<appender-ref ref="consoleAppender" />
</root>
</configuration>