1.日志管理
使用logback进行日志管理
1.1 引入依赖
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
1.2 配置logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定期的掃描配置文件是否存在,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" />
<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">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- debug rollingfileappender,滚动的生成新的文件 -->
<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>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 如果是debug级别的则保存 -->
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</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">
<!-- 如果是debug级别的则保存 -->
<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">
<!-- 如果是debug级别的则保存 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- additivity
1.若是additivity设为false,则子Logger只会在自己的appender里输出,不会在root的logger的appender里输出(个人可以理解为additivity设为false后,子Logger会覆盖掉root的logger)。
若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出,但是只会以logger配置的level为主
-- >
<logger name="com.imooc.o2o" level="${log.level}"
additivity="true">
<appender-ref ref="debugAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="errorAppender" />
</logger>
<root level="info">
<appender-ref ref="consoleAppender" />
</root>
</configuration>
遇到的问题
可以打印到控制台,但是没有打印的文件,只是生成了文件。
找了下问题
忘了写pattern标签
<encoder>
<pattern>${log.pattern}</pattern>
</encoder><!-- 格式 -->