log4j2在JavaWeb项目中的配置与使用
2021/7/21 17:09:37
本文主要是介绍log4j2在JavaWeb项目中的配置与使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
背景:
Tomcat版本8.0
spring版本5.2.9
log4j2的依赖有:log4j-api-2.14.0.jar、log4j-core-2.14.0.jar、log4j-web-2.14.0.jar
log4j2.xml配置如下:
实现日志分级别分别记录,且根据日期自动存储每日日志文件
<?xml version="1.0" encoding="UTF-8"?> <!-- configuration的status,用来设置log4j2自身内部的信息输出,可以不设置。当设置为trace时,会有各种详细输出 --> <!-- monitorInterval: log4j能够自动检测修改配置文件和重新配置本身,设置间隔秒数--> <configuration status="WARN" monitorInterval="300"> <appenders> <!--控制台输出所有日志 --> <console name="Console" target="SYSTEM_OUT"> <!--输出日志的格式 --> <PatternLayout pattern="[%-5p] %d{yyyy-MM-dd HH:mm:ss} method:%l%n" /> </console> <!-- 打印出info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --> <RollingFile name="InfoFile" fileName="E://logs/info.log" filePattern="E://logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <!-- 过滤器,表示只输出info级别的日志。ACCEPT:接收;DENY:拒绝;NEUTRAL:中立 --> <Filters> <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL" /> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> </Filters> <PatternLayout pattern="[%-5p] %d{yyyy-MM-dd HH:mm:ss} METHOD:%l%n%m%n%n" /> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="10MB" /> </Policies> <!-- DefaultRolloverStrategy如不设置,则默认同一文件夹下最多7个文件,这里设置了31 --> <DefaultRolloverStrategy max="31"></DefaultRolloverStrategy> </RollingFile> <RollingFile name="WarnFile" fileName="E://logs/warn.log" filePattern="E://logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" /> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" /> </Filters> <PatternLayout pattern="[%-5p] %d{yyyy-MM-dd HH:mm:ss} method:%l%n%m%n%n" /> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="10MB" /> </Policies> <DefaultRolloverStrategy max="31" /> </RollingFile> <RollingFile name="ErrorFile" fileName="E://logs/error.log" filePattern="E://logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="[%-5p] %d{yyyy-MM-dd HH:mm:ss} method:%l%n%m%n%n" /> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="10MB" /> </Policies> <DefaultRolloverStrategy max="31" /> </RollingFile> </appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 --> <loggers> <!--过滤掉spring和mybatis的一些无用的DEBUG信息 --> <logger name="org.springframework" level="INFO"></logger> <logger name="org.mybatis" level="INFO"></logger> <!-- 只输出INFO及以上级别的日志 --> <root level="INFO"> <appender-ref ref="Console" /> <appender-ref ref="InfoFile" /> <appender-ref ref="WarnFile" /> <appender-ref ref="ErrorFile" /> </root> </loggers> </configuration>
注:
1、日志级别优先排序:OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL
2、一些常用的日志配置的参数说明:
%d:日志日期格式
%l:完成的位置,包括类名、方法名、文件名、行数
%L:行号
%m|%msg:错误信息,即logger.error(String msg)中的msg
%M|%method:所在的方法名
%p:日志级别
%n:换行
%t:当前线程名称
%c:logger名称
%C:类名
%F|%file:文件名
需要在web.xml中增加配置如下:
<!--上面log4j2配置文件的路径--> <context-param> <param-name>log4jConfiguration</param-name> <param-value>classpath:log4j2.xml</param-value> </context-param> <context-param> <param-name>log4jContextName</param-name> <param-value>star</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>600000</param-value> </context-param> <!--log4j2监听器--> <listener> <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> </listener> <listener> <!-- 日志过滤器 --> <filter> <filter-name>log4jServletFilter</filter-name> <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class> </filter> <filter-mapping> <filter-name>log4jServletFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping>
然后就可以在代码里使用啦,在需要记录日志的类里使用如下:
//定义logger private Logger logger=LogManager.getLogger(this.getClass().getName()); //记录日志 logger.info("记录日志:");
这篇关于log4j2在JavaWeb项目中的配置与使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27JavaScript面试真题详解与解答
- 2024-12-27掌握JavaScript大厂面试真题:新手入门指南
- 2024-12-27JavaScript 大厂面试真题详解与解析
- 2024-12-26网络攻防资料入门教程
- 2024-12-26SQL注入资料详解:入门必读教程
- 2024-12-26初学者指南:数据库服务漏洞项目实战
- 2024-12-26网络安全项目实战:新手入门指南
- 2024-12-26网络攻防项目实战入门教程
- 2024-12-26信息安全项目实战:从入门到初步应用
- 2024-12-26SQL注入项目实战:初学者指南