如何使用简单的Java Web应用程序配置Log4j2?我在apache网站上浏览了这个教程,但它没有提供任何直接的例子w.r.t web应用程序。我在独立的应用程序中使用它,我有记录器的静态变量。但在Servlet中,我认为我们不能拥有实例变量。我们应该在doPost中使用静态变量吗?
此外,任何指向已配置的log4j2网络应用程序的指针或包含所有步骤的教程都会有所帮助,因为我无法找到合适的指针。
我在Tomcat 6.0服务器上运行。
答案 0 :(得分:4)
Servlets 3.0环境
将log4j2.xml
放入WEB-INF/classes
非常简单。
短篇小说 Log4j 2“只适用于Servlet 3.0和更新的Web” 应用。它能够自动启动时 应用程序取消部署时应用程序部署和关闭。
Servlets 2.5环境
如果您在Servlet 2.5 Web应用程序中使用Log4j,或者如果您使用 已禁用自动初始化 isLog4jAutoInitializationDisabled上下文参数,你必须 在中配置Log4jServletContextListener和Log4jServletFilter 部署描述符或以编程方式。过滤器应该匹配 所有类型的请求。听众应该是第一个 在您的应用程序中定义的监听器,并且过滤器应该是 第一个过滤器在您的应用程序中定义和映射。这是 使用以下web.xml代码轻松完成:
<listener>
<listener-class>org.apache.logging.log4j.core.web.Log4jServletContextListener</listener-class>
</listener>
<filter>
<filter-name>log4jServletFilter</filter-name>
<filter-class>org.apache.logging.log4j.core.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>
<dispatcher>ASYNC</dispatcher>
<!-- Servlet 3.0 w/ disabled auto-initialization only; not supported in 2.5 -->
</filter-mapping>
然后编写配置选项:
<context-param>
<param-name>log4jContextName</param-name>
<param-value>myApplication</param-value>
</context-param>
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>file:///etc/myApp/myLogging.xml</param-value>
</context-param>