Java Log4j-基于项目模块记录到多个日志文件
考虑这个场景: 我有一个包含两个模块和一个通用模块的项目,如下所示(包结构): 在上面的例子中,Java Log4j-基于项目模块记录到多个日志文件,java,logging,log4j,Java,Logging,Log4j,考虑这个场景: 我有一个包含两个模块和一个通用模块的项目,如下所示(包结构): 在上面的例子中,commonmodule类可以被其他两个模块使用 问题: 我需要配置log4j,使来自moduleone和modulewo的日志消息进入不同的日志文件。我总是可以使用 但真正的问题是,当我还想记录来自commonmodule的消息时。因此,当从moduleone调用commonmodule类时,commonmodule日志消息应转到moduleone日志文件。如果从modulewo访问commonmo
commonmodule
类可以被其他两个模块使用
问题:
我需要配置log4j,使来自moduleone
和modulewo
的日志消息进入不同的日志文件。我总是可以使用
但真正的问题是,当我还想记录来自commonmodule
的消息时。因此,当从moduleone
调用commonmodule
类时,commonmodule
日志消息应转到moduleone
日志文件。如果从modulewo
访问commonmodule
,则commonmodule
日志消息应转到modulewo
日志文件
可以用这种方式配置Log4J吗?有什么评论吗
附言:我想我已经把问题说清楚了。如果有任何困惑,请留下评论,我会尽力澄清。:)
可以用这种方式配置Log4J吗
简而言之,除非您编写一个自定义过滤器,否则它不适用于log4j。该过滤器将需要捕获并分析每个日志事件的调用堆栈,这些日志事件将调用堆栈添加到每个日志附加器。。。那会很贵 我同意@Stephen C的观点,即如果没有昂贵的定制记录器,就无法使用Log4j 另一个类似的日志框架Logback支持两个选项,这可能足以消除对自定义appender的需要。它们被称为和标记 标记提供了一种向日志语句添加自定义信息的方法,您可以(取决于公共包的使用方式)传入要使用的标记,具体取决于使用它的模块 MDC可以通过在进入公共模块的代码之前设置它们,然后在离开时取消设置它们来使用 它也有一个可以通过appender对其中任何一个进行过滤的函数
com.mysite.moduleone
com.mysite.moduletwo
com.mysite.commonmodule