【问题标题】:log4j jars running under the same classloader在同一个类加载器下运行的 log4j jar
【发布时间】:2012-12-25 03:27:31
【问题描述】:

我的 log4j 有问题,我有几个 jar,每个 jar 应该写入不同的日志位置 - 但它没有发生,日志被写入所有 jar 的相同位置。

我扩展了 RollingFileAppender 类并覆盖了 setFile 方法。

使用相同的类加载器加载罐子。

我做错了什么?

public class CustomRollingFileAppender extends RollingFileAppender {
   // some additional methods here...

public synchronized void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize) throws IOException {
    String logFileName = CommonJarClass.getPluginLogRoot() + File.separatorChar + fileName;
    super.setFile(logFileName , append, bufferedIO, bufferSize);
}

}

【问题讨论】:

    标签: log4j classloader


    【解决方案1】:

    jar 使用相同的类加载器加载

    这是一个战争项目吗?你正在加载所有的罐子?

    每个 jar 应该写入不同的日志位置

    每个 jar 都已配置为使用您的 CustomRollingfileAppender ?

    【讨论】:

    • 不,它不是一个战争项目,它是一个将 jars 作为插件加载的系统。是的,每个 jar 都已配置为使用您的 CustomRollingfileAppender
    • 如果所有 log4j 类都使用同一个类加载器加载,就会出现冲突。它应该由不同的 JVM 加载以使其工作。或者,尝试为每个 jar 项目分别引用 log4j.jar。
    • 覆盖无法解决您的问题。尽管您覆盖 RollingFileAppender,但应在单独的 log4j 配置中指定 CustomRollingFileAppender 类。
    猜你喜欢
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 2011-10-18
    • 2021-10-10
    • 2018-03-14
    相关资源
    最近更新 更多