[英]log4j2 Web Lookup not working for IBM WAS9 JVM Custom Property
[英]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用户邮件列表线程中获得的答案:
干杯,下午。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.