我需要将1批应用程序拆分为3个不同的应用程序。代码几乎相同,我刚刚修改了ANT构建脚本,并为不同的应用程序排除或包含了一些依赖项。比我为每场战争设置了不同的web.xml。每个web.xml都为不同的行为定义了不同的bean应用程序上下文。
所有战争都在一个tomcat服务器上运行。应用程序使用log4j,但现在我重构它以使用slf4j。以为我仍然需要在slf4j下使用log4j。
我遇到的问题是每个应用程序日志必须出现在不同的日志文件中, 即使班级名称相同。
我现在能想到的唯一解决方案是将log4j-over-slf4j包装起来,创建3个不同的slf4j日志工厂,为每个日志名称附加一些前缀。例如,如果我有这个日志:
private final Logger logger = LoggerFactory.getLogger(MainProcessor.class);
每个日志记录工厂都会对这些日志记录名称进行更改(使用前缀app1,app2和app3):
app1.com.test.MainProcessor
app2.com.test.MainProcessor
app3.com.test.MainProcessor
有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
尝试使用钩子方法,激活事件等,因此日志记录不会发生在应用程序之间共享的类中,而是发生在每个应用程序唯一的某些(顶级)类中。 变量是静态访问某些日志记录类,从应该发生日志记录的类中使用单例等,但在应用程序初始化时将上下文设置为该日志记录类。