java - 如何将 WebLookup 与 log4j-web 一起使用?

标签 java tomcat log4j log4j2

我正在使用 log4j-web 依赖项在 tomcat 环境中正确(取消)注册 log4j2 记录器:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-web</artifactId>
</dependency>

问题:然后我不能再使用 WebLookup 如下:

<RollingRandomAccessFile name="TEST" fileName="${web:rootDir}-${web:majorVersion}-application.log" ..>

当我排除 log4j-web 依赖项时,weblookup 工作正常。但是我必须使用依赖项来进行正确的 tomcat 日志记录。

可能查找初始化太晚了。 那么,我怎样才能继续使用网络查找呢?

最佳答案

一种可能的解决方案:在记录器初始化之前 Hook ,并填充映射参数以在 log4j2.xml 配置中使用:

@SpringBootApplication
public class App extends SpringBootServletInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        MainMapLookup.setMainArguments(new String[] {"thekey", "thevalue"});
        super.onStartup(servletContext);
    }
}

用法:

fileName="${main:thekey}-..."

关于java - 如何将 WebLookup 与 log4j-web 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36998917/

相关文章:

java - log4j 未登录到文件或控制台

Java套接字编程。如何在后台等待服务器响应?

java - JRebel 仅在启用提示时启动

java - 使用 jetty 和 log4j 2.9.1 扫描条目 META-INF/versions/9/org/apache/logging/log4j/util/StackLocator.class 时出错?

java - 如何在 tomcat 7 中设置 keepgenerated 属性

java - 服务器启动时自动清理

java - log4j2 访问环境属性

Java 信号量、acquire() 和release()

java - ArrayList.add() 不添加,不返回错误

java - JPARepository 和 Hibernate 返回给定 ID 的结果?