繁体   English   中英

log4j2 Web Lookup无法正常工作

[英]log4j2 Web Lookup not working

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

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

我在3.0 servlet中运行时已经阅读了与log4j2 web查找相关的各种在线文档,但我仍然无法看到我们的配置中可能存在的问题。 而且我不知道在log4j的跟踪日志中要查找什么,以便查看我们缺少的内容。

我们的堆栈:

Windows and Linux OSes Java 8 Tomcat 7.0.5x log4j-xxx 2.2 (log4j-api, log4j-core, log4j-slf4j-impl, log4j-jcl, log4j-web all in classpath)

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

干杯,下午

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

例:

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>节点,以便log4j2 Web查找能够在Tomcat 7.0.5x容器上运行。

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

log4j2网络查找问题

干杯,下午。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM