1

是否可以使用 Log4J/Tomcat 同时处理两个不同级别的日志记录?这是我的情况:我有几个 webapps 在同一个 Tomcat 服务器上运行。其中一些应用程序有自己的 log4j 属性文件(旧版)。

我想添加的是一个带有 JDBCAppender 的新记录器,它可以在所有这些应用程序中工作(它们应该一起使用,所以让它们记录到我们选择的数据库对我们来说非常有用。)我'我已经编写了属性文件条目,以便按照我想要的方式执行此操作(并出于语法目的在其中一个本地属性文件中进行了测试)。

是否可以将这个新的 logger/JDCBAppender 放到服务器级 log4j.properties 文件中,然后让 webapps 访问它?例如,如果我将记录器定义为“com.xxx.yyy”,那么在任何具有“com.xxx.yyy”包中的类的 web 应用程序中,通过如下调用获取所述记录器:

private static Logger logger = Logger.getLogger(MyClass.class);

假设完整的声明是 com.xxx.yyy.MyClass。

我尝试将 log4j.properties 文件放在$CATALINA_HOME/lib目录中,并将必要的 jar 文件放在同一目录中(如下面的评论中所指示),但是当我启动服务器时,它似乎没有选择那个,尽管它从我的 webapp 中获取了一个。我知道属性文件必须在类路径上才能让 log4j 拾取它,但是如果有多个 log4j.properties 文件,是否会出现某种类似的类路径样式问题?

更新:我已经更新了我尝试过的描述。

4

1 回答 1

0

I've done some additional research and learned that if multiple log4j.properties files are on the classpath, the system will use the first it finds, just like with java class/library files.

So in the end, the situation I was describing is not feasible, as adding a Server-level properties file would cause all my individual web-apps' legacy property files to be ignored. It may still be possible to do something similar, but my question was intended to focus specifically on the log4j.properties file.

于 2013-06-21T13:40:50.223 回答