我需要log4j
和我的应用程序的一些帮助。我在JAR上有3个包,如下所示。
A类和B类有一个主类,所以我可以同时启动两个不同的应用程序实例,一个来自A类,另一个来自B类。
我想要的是从A类运行的应用程序必须登录到appender1
我从B类运行的应用程序必须登录到appender2
问题是来自C类的日志是在A类appender和B类appender中编写的:当我运行A类时我有
appender1:
开始A. 做点什么 结束A
appender 2:
做某事
在将A类运行到appender1时,我不想写入appender2。 与B类相同我不想只在appender2中写入appender1
感谢您的建议。
这是我的类和log4j的模式:
我的JAR:
-
Class A {
LOG = LogFactory.getLog(A.class);
main() {
LOG.info("Start A");
new C().doSomething();
LOG.info("End A");
}
}
Class B {
LOG = LogFactory.getLog(B.class);
main() {
LOG.info("Start B");
new C().doSomethingElse();
LOG.info("End B");
}
}
Class C {
LOG = LogFactory.getLog(C.class);
doSomething() {*
LOG.info("Doing something");
}
doSomethingElse() {
LOG.info("Doing something else");
}
}
的log4j.xml
...
<logger name="com.myAppl.package1" additivity="false">
<level value="info" />
<appender-ref ref="appender1"/>
</logger>
<logger name="com.myAppl.package2" additivity="false">
<level value="info" />
<appender-ref ref="appender2"/>
</logger>
<logger name="com.myAppl.package3" additivity="false">
<level value="info" />
<appender-ref ref="appender1"/>
<appender-ref ref="appender2"/>
</logger>
...
答案 0 :(得分:0)
您没有指定您正在使用的log4j版本。使用版本2,您可以将过滤器附加到appender。 http://logging.apache.org/log4j/2.x/manual/filters.html
我希望您可以设置一些ThreadContext或其他内容并过滤