将 Tomcat 9 个 servlet 异常日志重定向到 log4j2

Redirect Tomcat 9 servlet exception logs to log4j2

我正在使用 log4j2 记录我的 JSF 网络应用程序。

  1. 我在 WEB-INF 文件夹下创建了 log4j2.xml 文件并配置了它

  2. 然后将这些依赖项添加到我的 pom.xml 并在我的应用程序中使用 log4j2

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.13.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.13.3</version>
    </dependency>
    
  3. 我按照官方指南将 log4j2 与我的 Tomcat 9 集成在这里 Tomcat log4j2

  4. 我在步骤 3 中将 org.apache.logging.log4j:log4j-jul:2.13.3 jar 添加到创建的 lib 目录中,然后通过将以下代码添加到 setenv.bat 中的 Tomcat/bin 来配置 Tomcat 日志记录]

    set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

现在我可以获得 Tomcat 日志消息,我的 Web 应用程序日志和 JSF 日志根据我的 log4j2 格式打印。

问题是,我仍然收到 javax.servlet.ServletException 不符合我的 log4j2 日志格式的消息。他们似乎忽略了我的 log4j2 配置。

我该如何解决这个问题?

谢谢。

我发现 javax.servlet.ServletException 消息没有被我的应用程序处理。因此,它们没有根据我的 log4j2 配置进行格式化。我通过创建自定义 JSF 异常处理程序并使用 log4j2 记录捕获的异常解决了这个问题。