gpt4 book ai didi

java - 在 tomcat/shared/lib 中获取 jar 以使用调用它们的 webapp 的配置进行记录

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:18 25 4
gpt4 key购买 nike

我希望将我们的 tomcat 实例从 5.5.27 升级到 6.0.32,但我在从 shared/lib 目录中的 jars 进行日志记录时遇到了一些问题(我在 tomcat 6 中重新创建了该目录)。

我们有一个 jar 文件,它是我们在构建过程中创建的,其中包含一些通用代码,在 tomcat 5 下,它位于 shared/lib 下。当我们从这个 jar 文件中的代码编写日志语句时,它们被写入当时调用该 jar 的 Web 应用程序的日志文件。我们的每个 webapps 在其 WEB-INF/lib 目录中都有一个 log4j.properites 和 log4j.jar,在 shared/lib 中也有一个 log4j.jar,但没有 log4j/properties。

我们正在使用 log4j 并获取对日志的引用,如下所示:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MyClass {
private final static Log CLASS_LOG = LogFactory.getLog(MyClass.class);
}

但是当我将我们的 jar、webapps、log4.properties 和 log4j.jars 的完全相同的配置移动到 tomcat 6 中时,来 self 们常用 jar 的日志记录语句只会转到 catalina.log。

我读了很多书(包括 http://www.mulesoft.com/tomcat-classpath 以及 tomcat 网站上的类加载器和日志记录文档),但大多数时候我无法理解它在 tomcat 5 中的工作方式! (我没有设置它,这是我继承的东西,直到现在才“正常工作”)。

有没有人有过类似的尝试将日志从共享库获取到 webapp 日志文件的经验?我在想将共享 jar 放在每个 webapp 的 WEB-INF/lib 目录中会对此进行排序,但我最终会得到相同内容的许多副本。

最佳答案

查看 tomcat6/7 中的 tomcat/conf/catalina.properties。他们弃用了共享路径和服务器路径,只有公共(public)路径是明确配置的(例如 tomcat6/lib 是公共(public)的)。您可以重新启用共享,我猜您会获得与 tomcat 5.x 类似的体验。

但是,您说要将 logging.properties 放在 WEB-INF/lib 中,我认为这是不对的,因为它应该只包含 jar 文件。它应该放在 WEB-INF/classes/

此外,此时停止使用 commons-logging。而是编码为 slf4j,因为它有更少的 tomcat 问题。此外,如果您使用 logback 而不是 log4j,它甚至可以避免使用适配器(例如,您的 slf4j 调用实际上是直接的 logback 调用)。使用不同的配置文件(但有在线 log4j.property 转换器)。

关于java - 在 tomcat/shared/lib 中获取 jar 以使用调用它们的 webapp 的配置进行记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6956701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com