目前项目搭建是使用的Spring mvc + hibernate(比较原始,boot后面会尝试)
1.引入日志包
ch.qos.logback 为logback包
org.logback-extensions 包用于集成Spring的包
<!-- log begin --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${log.version}</version> </dependency> <dependency> <groupId>org.logback-extensions</groupId> <artifactId>logback-ext-spring</artifactId> <version>0.1.4</version> </dependency> <!-- log end -->
备注:网上一些博客有需要引入slf4j包,自己测试写入时没有引入也能使用
2.配置web.xml监听器(集成web项目,logback-config.xml 为指定的配置文件)
<!-- 配置日志logback--> <!-- logback扩展,监听,用于解决与spring的结合 --> <listener> <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class> </listener> <context-param> <param-name>logbackConfigLocation</param-name> <param-value>classpath:logback-config.xml</param-value> </context-param>
3.配置文件(logback-config.xml)
目前我配置了三种日志输出文件:
1.file为文件输出,会记录所有日志
2.error文件输出,记录异常日志(方便错误直接查找和错误监控) 日为单位输出
3.info文件输出,记录info级别日志 日为单位输出
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- 定义日志文件 输入位置 --> <property name="log_dir" value="/Users/LiRui/Desktop/wz/log/test"/> <!--时间转换格式--> <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/> <!--控制台输出--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> </encoder> </appender> <!--滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件--> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--配置过滤器,只拦截error信息--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern>%msg%n</pattern> </encoder> <append>true</append> <!--最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--每天生成一个日志文件,保存30天的日志文件。--> <fileNamePattern>${log_dir}/ky-error.%d{yyyy-MM-dd}.log </fileNamePattern> <!--可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。--> <maxHistory>60</maxHistory> <totalSizeCap>3GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <!-- INFO级别日志 appender --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤器,只记录INFO级别的日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> </filter> <encoder> <pattern>%msg%n</pattern> </encoder> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按天回滚 daily --> <fileNamePattern>${log_dir}/ky-info.%d{yyyy-MM-dd}.log </fileNamePattern> <!--可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。--> <maxHistory>60</maxHistory> <totalSizeCap>3GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${log_dir}/ky-all.log</file> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender> <!--设置日志级别--> <root level="debug"> <appender-ref ref="STDOUT"/> <appender-ref ref="INFO"/> <appender-ref ref="ERROR"/> <appender-ref ref="FILE"/> </root> </configuration>
输出文件:
其他设置可参考博客:
https://www.cnblogs.com/gslyyq/p/5256789.html
中文文档参考: