log4j根据调用它的位置登录到同一个包的不同文件

时间:2016-06-14 06:56:55

标签: java log4j

假设我的项目有3个包,我使用log4j进行日志记录。 org.a,org.b,org.c其中org.c有一些utils代码,包'a'和包'b'中的类调用。

如果我将org.a中的日志配置为file1,而将org.b中的日志配置为file2。如果'c'的调用者是'org.a'中的某个类,我希望包'c'的日志进入file1,如果'c'的调用者是'org.b'中的某个类,我希望进入file2。

如果有任何基于配置或以编程方式执行此操作,请与我们联系。

潜在的主要问题:

我正在开发apache ambari项目,其中views被部署为jar / war文件。每个视图定义一个唯一的包名称,其所有代码都在该包中。 Ambari项目只是使用单独的类加载器加载这些jar / war。但log4j由主Ambari项目实例化。我已使用PropertyConfigurator根据其包和log files for each view配置了单独的loaded them dynamically。问题是目前来自/contrib/views/commons等常见软件包的日志进入Ambari's log file而不是单个视图的日志文件。如果我根据包名配置它,那么这些包中的所有日志都将进入视图的任何一个日志文件,而不是基于调用者视图。

1 个答案:

答案 0 :(得分:0)

如果在常用模块的日志文件中打印来电者信息怎么办?