Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将同一包写入不同应用程序中的不同日志文件_Java_Logging_Log4j - Fatal编程技术网

Java 将同一包写入不同应用程序中的不同日志文件

Java 将同一包写入不同应用程序中的不同日志文件,java,logging,log4j,Java,Logging,Log4j,我正在探索log4j的选项,根据应用程序的不同,使用相同的包将消息写入不同的日志文件。这两个应用程序都部署到web服务器上。他们都使用一些共享包,比如com.ps.foo。我的用例是,我希望com.ps.foo消息在服务战争中执行时写入service.log,在web战争中执行时写入web.log 我们需要log4j配置在WAR外部(在本地文件系统中),这样我们就可以在不重新部署/重启web服务器的情况下更改记录器属性,否则我只需将每个log4j配置打包在每个WAR中 我可以将log4j配置文件

我正在探索log4j的选项,根据应用程序的不同,使用相同的包将消息写入不同的日志文件。这两个应用程序都部署到web服务器上。他们都使用一些共享包,比如com.ps.foo。我的用例是,我希望com.ps.foo消息在服务战争中执行时写入service.log,在web战争中执行时写入web.log

我们需要log4j配置在WAR外部(在本地文件系统中),这样我们就可以在不重新部署/重启web服务器的情况下更改记录器属性,否则我只需将每个log4j配置打包在每个WAR中

我可以将log4j配置文件指定为JVM上的a-D选项,但随后我将降级为使用相同的log4j配置。我不能使用相同的log4j配置文件,因为我无法在应用程序中限定com.ps.foo,我的理解是log4j只关心类

我当前的设计是向每个应用程序添加一个侦听器,该应用程序在servlet上下文初始化时使用自己独特的log4j配置初始化log4j。然后我会有一个特定于应用程序的log4j配置,并在每个配置中指定com.ps.foo


任何朝正确方向的轻推都会很好。

我所能想到的就是为两个war文件实现CustomFileAppender,然后访问部署细节(通过一些全局变量或描述符?),然后从这个appender中选择要写入的正确文件。我可以想为两个war文件实现CustomFileAppender,然后访问部署细节(通过一些全局变量或描述符?)