【问题标题】:Combining Application and Server Level logging with Log4J?将应用程序和服务器级别的日志记录与 Log4J 相结合?
【发布时间】:2013-06-20 19:02:52
【问题描述】:

是否可以使用 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 文件放在同一目录中(如下面的 cmets 中所述),但是当我启动服务器时,它没有似乎选择了那个,尽管它从我的 webapp 中选择了那个。我知道属性文件必须在类路径上才能让 log4j 拾取它,但是如果有多个 log4j.properties 文件,是否会出现某种类似的类路径样式问题?

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

【问题讨论】:

标签: java properties log4j


【解决方案1】:

我做了一些额外的研究并了解到如果类路径上有多个 log4j.properties 文件,系统将使用它找到的第一个文件,就像使用 java 类/库文件一样。

所以最后,我所描述的情况是不可行的,因为添加服务器级属性文件会导致我所有的个人 web 应用程序的旧属性文件被忽略。仍然可以做类似的事情,但我的问题是专门针对 log4j.properties 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多