在同一类加载器下运行的log4j jar

在同一类加载器下运行的log4j jar,log4j,classloader,Log4j,Classloader,我对log4j有一个问题,我有几个jar,每个jar都应该写入不同的日志位置——但这并没有发生,所有jar一起将日志写入相同的位置 我扩展了RollingFileAppender类并重写了setFile方法 jar使用相同的类加载器加载 我做错了什么 public class CustomRollingFileAppender extends RollingFileAppender { // some additional methods here... public synchroni

我对log4j有一个问题,我有几个jar,每个jar都应该写入不同的日志位置——但这并没有发生,所有jar一起将日志写入相同的位置

我扩展了RollingFileAppender类并重写了setFile方法

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

我做错了什么

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);
}
}

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

这是一个战争计划吗?你在装所有的罐子吗

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


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

不,它不是一个war项目,而是一个将jar作为插件加载的系统。是的,每个jar都配置为使用CustomRollingFileAppender如果所有log4j类都使用同一个类加载器加载,则会出现冲突。它应该由不同的JVM加载以使其工作。或者,尝试为每个jar项目分别引用log4j.jar。重写对您的问题没有帮助。尽管您重写了RollingFileAppender,但CustomRollingFileAppender类应该在单独的log4j配置中指定。