【问题标题】:Different Log4j for Embedded Tomcat and the web apps嵌入式 Tomcat 和 Web 应用程序的不同 Log4j
【发布时间】:2012-09-18 04:38:09
【问题描述】:

我正在使用嵌入式 Tomcat(版本 7.028)。我的嵌入式 Tomcat 服务器是一个可配置的服务器,可以向其添加一个或多个 Web 应用程序。

我想将 Embedded Tomcat 中的错误/信息消息记录在一个日志文件中,并为 Embedded Tomcat 上部署的所有应用程序维护不同的日志文件。我在 Embedded Tomcat 的类路径中放置了一个 log4j.properties 文件。它正在被正确读取,我能够记录 Tomcat 的信息和错误消息。我还将嵌入式 Tomcat 中的所有记录器声明为非静态的。

我已将 log4j.xml 放在 webapp 的 WEB-INF/classes 位置以覆盖嵌入式 Tomcat 的 log4j.properties(参考 Link)。但是 log4j.xml 没有被启动。仅使用 Tomcat 的 log4j 设置。

请帮我解决这个问题。有没有可以添加到xml或者properties文件中的配置?

【问题讨论】:

  • 我发现只有一个类加载器用于嵌入式 tomcat 中的所有 webapps。因为只有一个类加载器,所以首先由嵌入式 tomcat 服务器初始化的 log4j 正在工作,并且其他 webapps 没有被覆盖。
  • 我尝试添加新的 WebappLoader,如下所示:Context context = tomcat.addWebapp("/myApp", "/opt/test/myApp"); WebappLoader xcomLoader = new WebappLoader(context.getParentClassLoader()); addJarFileUrls(context, new File(jarFilesDirectory)); context.setLoader(myLoader); myLoader.start(); 但这不起作用。在调用 start 方法时出现错误。难道我做错了什么?请指出正确的方向。

标签: web-applications log4j overriding embedded-tomcat-7


【解决方案1】:

请尝试在每个 web 应用程序中添加 log4j jar(我的意思是在 WEB-INF/lib 中),我认为这可能会解决您的问题。

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2019-08-11
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多