Maven配置
属性设置:
2.5
依赖设置:
org.apache.logging.log4j
log4j-core
2.5
org.apache.logging.log4j
log4j-api
2.5
org.apache.logging.log4j
log4j-web
2.5
如果同时使用了slf4j包(例如使用quartz包就会自带一个slf4j包的依赖),则需额外添加依赖包(这个包目前还是beta版,以后可以查一下有没有新版的可以替换):
org.apache.logging.log4j
log4j-slf4j-impl
2.0-beta9
web.xml配置
添加listener和filter:
org.apache.logging.log4j.web.Log4jServletContextListener
log4jServletFilter
org.apache.logging.log4j.web.Log4jServletFilter
log4jServletFilter
/*
REQUEST
FORWARD
INCLUDE
ERROR
添加配置文件
log4j2不再支持原来的log4j.properties配置。如需修改默认配置,需在classpath下配置log4j2.xml文件。
在不设置log4j2.xml文件时,log4j2默认采用下面的配置[1]:
该配置只有一个Appender:Console,目标是SYSTEM_OUT,即日志内容,都会打印在eclipse控制台上。Root Logger的级别是error,即:所有error及以上级别的日志才会记录。(注:日志级别顺序为 TRACE < DEBUG < INFO < WARN < ERROR < FATAL ),所以最终只有2日志会输出(error,fatal)。
配置第1行中的status="WARN",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF,设置成“WARN”指:所有log4j2的event信息中,只有WARN及以上级别的信息才记录。
下面是一个非默认log4j2.xml的配置范例:
${sys:catalina.home}/webapps
testApp/logs
testApp
monitorInterval="1800" 指log4j2每隔1800秒(半小时),自动监控该配置文件是否有变化,如果变化,则自动根据文件内容重新配置;
RollingRandomAccessFile 即表示以文件方式记录,注意一下filePattern 的设置,它与20行的SizeBasedTriggeringPolicy (表示单个文件最大多少容量)结合在一起,非常有用,以这段配置为例,当单个文件达到10M后,会自动将以前的内容,先创建(年-月)的目录,然后按 "xxx-年-月-日-序号"命名,打成压缩包;
DefaultRolloverStrategy max="20"表示压缩包,最多保留20个
Logger标签定义一个新logger,在level中设置级别 ,使用文件方式来记录日志,additivity="true" 这里注意一下,因为下面还有一个root logger,任何其它的logger最终都相当于继承自root logger,所以“com.test.common.TestApp”这个logger中,如果记录了info及以上级别的日志,除了文件里会记录外,root logger也会生效,即:控制台也会输出一次。如果把additivity="true" 中的true,改成false,root logger就不会再起作用,即只会记录在文件里,控制台无输出。
另外关于logger的命名,对于Logger配置中已经明确指定类名的(例如上面例子里的com.test.common.TestApp),那么在生成logger时,可以不用指定classname:
static Logger logger = LogManager.getLogger();
配置中的同名logger,相当于只对这一个类起作用。
参考链接:
[1] log4j2与spring mvc整合
[2] log4j2官方user's guide(PDF)