Java EE Web项目添加log模块 目前最好的Java日志组件是**Log4j 2,就以Log4j 2为例,且Tomcat版本>=7.0.43。 **1. 项目依赖

org.apache.logging.log4j log4j-api 2.5 org.apache.logging.log4j log4j-core 2.5 org.apache.logging.log4j log4j-web 2.5 runtime

2. 创建log配置文件log4j2.xml

在目录WEB-INF中创建配置文件log4j2.xml。
内容如下:












3. 修改web.xml 3.1 Servlet 3.0 及以上 对于Servlet 3.0及以上的Web项目,不需要修改web.xml,LogContext会自动绑定生效。 (如果在web.xml手动配置了isLog4jAutoInitializationDisabled为true,即时是Servlet3.0,也要按Servlet2.5进行配置。原因是:这个参数导致ServletContainerInitializer没生效) 3.2 Servlet 2.5及以下

org.apache.logging.log4j.web.Log4jServletContextListener log4jServletFilter org.apache.logging.log4j.web.Log4jServletFilter log4jServletFilter /\* REQUEST FORWARD INCLUDE ERROR ASYNC

4. 高级应用 4.1 log4j2与slf4j配合使用 LINK 4.2 使用Spring MVC拦截器配置全局traceId,方便快速定位  LINK 项目源码 Github Q&A Q:如何判断Servlet版本? A:web.xml中web-app标签的version属性表示Servlet版本。 Q:接口ServletContainerInitializer是做什么的? A:ServletContainerInitializer初始化Log4jServletContextListener和Log4jServletFilter。 Q:为什么tomcat版本>=7.0.43? A:Tomcat7.0.43(包含7.0.43)以上版本会自动加载Log4jServletContainerInitializer(实现ServletContainerInitializer接口),以下版本会过滤 log4j*.jar,需要手动修改catalina.properties,在属性jarsToSkip中删除log4j*.jar。