我需要将 1 个批处理应用程序拆分为 3 个不同的应用程序。代码几乎相同,我刚刚修改了 ANT 构建脚本,并为不同的应用程序排除或包含了一些依赖项。比我为每场战争设置不同的 web.xml。每个 web.xml 使用不同的 bean 定义不同的 spring 应用程序上下文以实现不同的行为。
所有战争都在一个 tomcat 服务器上运行。应用程序使用 log4j,但现在我将其重构为使用 slf4j。以为我还需要在slf4j下使用log4j。
我遇到的问题是每个应用程序日志必须出现在不同的日志文件中,即使类名相同。
- 我无法编写不同的 log4j.properties 文件,因为管理员将它放在所有应用程序的 tomcat/lib 文件夹中。
- 我尝试在 tomcat/lib 中放置 3 个文件并在初始化 servlet 时更改每个应用程序的配置文件名,但它同时更改了所有应用程序。
我现在能想到的唯一解决方案是包装 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
有没有更好的方法来处理这个问题?