当前位置: 首页 > 知识库问答 >
问题:

带有 servlet 3.0 的Spring Web 应用程序中的 Log4j2

赵俊远
2023-03-14

我需要更改log4j2配置文件的默认位置。我按照这里的文档 https://logging.apache.org/log4j/2.x/manual/webapp.html

但是 log4j2 可以看到的唯一文件是 log4j2.xml类路径中。否则我得到“找不到log4j2配置文件”

我试过:

-1.设置上下文参数

-2将系统属性Log4jContextSelector设置为“org . Apache . logging . log4j . core . selector . jndicontextselector”。使用JNDI选择器

如本文所述https://logging.apache.org/log4j/2.x/manual/webapp.html#ContextParams

-3 查找:网络、环境、系统、ctx 和捆绑包。前 4 个失败的只有捆绑包有效,但您只能在类路径中查找。

-4设置isLog4jAutoLaunalization禁用为true,我不确定在这种情况下如何配置过滤器。如果我将它们包含在web.xml应用程序将不会部署。

项目中的jar

./WEB-INF/lib/log4j-jcl-2.4.1.jar
./WEB-INF/lib/log4j-core-2.4.1.jar
./WEB-INF/lib/log4j-slf4j-impl-2.4.1.jar
./WEB-INF/lib/log4j-api-2.4.1.jar

共有1个答案

卢宜然
2023-03-14

在我使用.propeties文件的情况下,我使用如下所示的代码

@Plugin(name = "LogsConfigurationFactory", category = ConfigurationFactory.CATEGORY)
public class CustomLogsConfigurationFactory extends PropertiesConfigurationFactory {
    @Override
    public Configuration getConfiguration(String name, URI configLocation) {
        File propFile = new File("/path_to/log4j2.properties");
        return super.getConfiguration(name, propFile.toURI());
    }

    @Override
    protected String[] getSupportedTypes() {
        return new String[] {".properties", "*"};
    }
}

我认为您可以在 Xml配置工厂上更改自定义日志配置工厂,并在 getSupportedTypes 方法中更改返回类型。我希望这会对你有所帮助。

 类似资料:
  • 问题内容: 我需要从Docker容器中在后台运行的Java应用程序中启动Selenium。启动失败,因为在运行时无法访问X11环境。请参阅下面的内容。 我该怎么办? 问题 我从安装Java 8和Jetty 9.3.x 的简单程序开始运行一个简单的服务(实际上是selenium的东西)。该服务实际上是为了启动一些需要UI才能执行的事情而设置的。我遇到的问题是其中的任何内容执行失败,因为UI在我运行的

  • 在SpringJSFWeb应用程序中将Netty客户端处理程序配置为消息接收点,有没有具体的方法? 如果一些独立的Java应用程序充当Netty服务器,我如何接收到SpringJSFWeb应用程序的消息?

  • 我一直在努力让我的第一个Android应用程序工作。我有一个使用webview的活动,我用它来打开上面有html表单的网页。 让“选择文件”按钮(用于文件输入)工作有些困难,但多亏了这里发布的在网络视图中上传文件的帮助,我终于解决了这个问题。从那里,我基本上使用了他们在Github上提供的主活动java代码。 我的实际问题是,当点击一个文件输入按钮时,我没有让用户使用我想要的设备摄像头的选项。起初

  • 这是MyResource: 和我的web.xml: 在客户端,我使用这个url:http://localhost:8080/[projectname]/webapi/helloworld 谢了!