【发布时间】: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