我有一个mule应用程序,它需要根据下面显示的环境从不同的位置加载log4j2.xml。
app1
dev --> /etc/dev/app1/log4j2.xml
sit --> /etc/sit/app1/log4j2.xml
. . .
prod --> /etc/prod/app1/log4j2.xml
我不想使用springbean加载,因为当这个bean加载时,Mule已经用默认配置启动了这个app1的日志上下文,并向其中写入了一些日志
在log4j功能中,有log4j2.system.properties和log4j2.component.properties文件。当它们中的任何一个被添加到类路径(src/main/resources(中,其中包含log4j.configurationFile属性时,它应该在应用程序启动期间拾取该文件。
参考:Log4j系统属性
log4j.configurationFile=${config.path}/app1/log4j2.xml
config.path在包装器中被定义为系统属性,并且可用于持有env路径的app1("/etc/dev"if-dev或"/etc/sit"if-sit等(
然而,这两个文件都没有被Mule拾取并解析为默认配置。
有人能帮助Mule在应用程序启动过程中拾取这些文件吗?
经过长时间的研究,我们不得不用"logConfig";键定义外部log4j2.xml文件在服务器中相对于mulehome路径的位置。
相同的路径可能在本地不起作用,但您可以创建";mklink";以类似于本地中的服务器路径。
我已经成功地测试了这两个。