我正在探索使用log4j的选项,将具有相同包的消息写入不同的日志文件,具体取决于应用程序。这两个应用程序都是部署到Web服务器的WAR。他们都使用一些共享包,比如com.ps.foo。我的用例是,我希望com.ps.foo消息在使用服务WAR执行时写入service.log,在web WAR中执行时写入web.log。
我们需要将log4j配置放在WAR的外部(在我们的本地文件系统中),这样我们就可以在不使用Web服务器的redploy / restart的情况下更改logger属性,否则我只需将每个log4j配置保存在每个WAR中。
我可以在JVM上将log4j配置文件指定为-D选项,但之后我将降级为使用相同的log4j配置。我不能使用相同的log4j配置文件,因为我无法用应用程序限定com.ps.foo,我的理解是log4j只关心类。
我目前的设计是为每个应用程序添加一个监听器,当servlet上下文初始化时,该监听器使用自己独特的log4j配置初始化log4j。然后我会有一个特定于应用程序的log4j配置,并在每个配置中指定com.ps.foo。
任何朝着正确方向的推动都会很棒。