gpt4 book ai didi

java - log4j2 Web 查找不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:16 26 4
gpt4 key购买 nike

我们有基于 Spring java 的 Web 部署,它使用 log4j2.xml 将消息记录到文件等。

我们现在需要更新我们的 log4j2.xml 配置,以便能够在其中执行 ${web:contextPath} 网络查找,这样我们就可以使用部署的上下文名称作为日志文件名称的一部分,记录器将消息记录到。但是,当我们部署应用程序时,log4j2 配置无法识别任何与 Web 查找相关的内容。创建用于记录消息的文件只是使用名称 ${web 创建的,实际上没有消息记录在其中。

我已经阅读了在 3.0 servlet 中运行时与 log4j2 网络查找相关的各种在线文档,但我仍然看不出我们的配置中可能存在什么问题。而且我不知道要在 log4j 的跟踪日志中查找什么才能了解​​我们遗漏了什么。

我们的堆栈:

Windows 和 Linux 操作系统
Java 8
Tomcat 7.0.5x
log4j-xxx 2.2(log4j-api、log4j-core、log4j-slf4j-impl、log4j-jcl、log4j-web 都在类路径中)

非常感谢任何有关如何使网络查找正常工作的帮助。

干杯,下午

最佳答案

如果您有一个基于 Spring 4 java 注释的 Web 应用程序,则可能有 log4j-slf4j-impl类路径中的 jar 并仍然执行 log4j2通过让您的 Web 初始化类扩展 Log4jServletContainerInitializer 来进行 Web 查找并调用 super.onStartup()在上面。

例子:

import javax.servlet.ServletContext;
import javax.servlet.ServletException;

import org.apache.logging.log4j.web.Log4jServletContainerInitializer;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

public class WebInitialiser extends Log4jServletContainerInitializer implements WebApplicationInitializer {

public void onStartup(ServletContext servletContext)
throws ServletException {

super.onStartup(null, servletContext);

AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();

rootContext.register(ApplicationConfig.class, IntegrationConfig.class,
JmsConfig.class, JmxConfig.class);

servletContext.addListener(new ContextLoaderListener(rootContext));
}

}

但是请注意,您似乎仍然需要拥有 web.xml包括 <display-name>节点顺序 log4j2Tomcat 7.0.5x 上工作的网络查找容器。

有关所有这些的更多详细信息,请参阅我在 log4j 用户邮件列表线程中获得的答案:

log4j2 web lookup questions

干杯,下午。

关于java - log4j2 Web 查找不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com