1、本章主要结合实例描述如何在SpringMVC框架中引入logback日志框架,关于常见的几种日志框架的介绍和性能对比大家可以自行去了解。
2、整合logback:
2.1、jar包引入,logback-ext-spring为spring支持jar
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <version>1.1.2</version>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- <version>1.1.2</version>
- </dependency>
- <dependency>
- <groupId>org.logback-extensions</groupId>
- <artifactId>logback-ext-spring</artifactId>
- <version>0.1.1</version>
- </dependency>
2.2、web.xml中配置监听器,param-name的配置参考WebLogBackConfigurer类
- <context-param>
- <param-name>logbackConfigLocation</param-name>
- <param-value>classpath:logback.xml</param-value>
- </context-param>
- <listener>
- <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
- </listener>
项目在D盘,这里配置的日志输出路径是:D:\local\logs\..,目录在项目启动时会自动创建
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration>
- <!-- 尽量别用绝对路径,如果带参数不同容器路径解释可能不同,以下配置参数在pom.xml里 -->
- <property name="log.root.level" value="DEBUG" /> <!-- 日志级别 -->
- <property name="log.other.level" value="ERROR" /> <!-- 其他日志级别 -->
- <property name="log.base" value="/local/logs" /> <!-- 日志路径,这里是相对路径,web项目eclipse下会输出到eclipse的安装目录下,如果部署到linux上的tomcat下,会输出到tomcat/bin目录 下 -->
- <property name="log.moduleName" value="dubbo-provider" /> <!-- 模块名称, 影响日志配置名,日志文件名 -->
- <property name="log.max.size" value="20MB" /> <!-- 日志文件大小 -->
- <!--控制台输出 -->
- <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <Pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method:%L -%msg%n</Pattern>
- </encoder>
- </appender>
- <!-- 日志文件输出 -->
- <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <File>${log.base}/${log.moduleName}.log</File><!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 -->
- <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。-->
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <FileNamePattern>${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip
- </FileNamePattern>
- <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 -->
- <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
- <maxFileSize>${log.max.size}</maxFileSize>
- </timeBasedFileNamingAndTriggeringPolicy>
- </rollingPolicy>
- <!-- 日志输出的文件的格式 -->
- <layout class="ch.qos.logback.classic.PatternLayout">
- <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method:%L -%msg%n</pattern>
- </layout>
- </appender>
- <!-- 为某个包下的所有类的指定Appender 这里也可以指定类名称例如:com.aa.bb.ClassName -->
- <logger name="com.dubbo.provider" additivity="false">
- <level value="debug" />
- <appender-ref ref="stdout" />
- <appender-ref ref="file" />
- </logger>
- <!-- root将级别为“DEBUG”及大于“DEBUG”的日志信息交给已经配置好的名为“Console”的appender处理,“Console”appender将信息打印到Console -->
- <root level="debug">
- <appender-ref ref="stdout" /> <!-- 标识这个appender将会添加到这个logger -->
- <appender-ref ref="file" />
- </root>
- </configuration>