在Mule中动态选择log4j2配置
我已经阅读了Mule文档,但不清楚如何为每个环境动态加载不同的日志配置文件。基本上,我希望在不同的环境中控制日志详细性和同步/异步功能,以便寻找基于服务器环境属性变量动态选择属性文件的类似功能。我还没有尝试过,但您应该能够在启动Mule时在命令行上设置log4j配置文件,使用在Mule中动态选择log4j2配置,mule,log4j2,Mule,Log4j2,我已经阅读了Mule文档,但不清楚如何为每个环境动态加载不同的日志配置文件。基本上,我希望在不同的环境中控制日志详细性和同步/异步功能,以便寻找基于服务器环境属性变量动态选择属性文件的类似功能。我还没有尝试过,但您应该能够在启动Mule时在命令行上设置log4j配置文件,使用log4j.configuration系统属性 例如(在Windows中),如果您的环境变量被称为MULE-ENV,则添加-Dlog4j.configuration=c:\some path\log4j-%MULE-ENV%
log4j.configuration
系统属性
例如(在Windows中),如果您的环境变量被称为MULE-ENV
,则添加-Dlog4j.configuration=c:\some path\log4j-%MULE-ENV%.xml
请注意,如果使用Mule standalone(在这种情况下,我认为您需要
-M-Dlog4j.configuration=…
),可以在wrapper.conf
文件中直接在命令行上设置,或者在Studio中运行时,在Run configuration(运行配置)中Arguments(参数)选项卡的VM params(虚拟机参数)部分。您的应用程序中可以有一个bean,它可以调用该方法来设置配置。您可以将环境名称作为参数传递给这个bean,它将选择与该环境关联的配置文件。您可以使用invoke组件调用该方法,并在启动时执行该流。
在执行流之前,可以使用默认的日志记录配置。2种方法可以从
外部路径或应用程序类路径
在应用程序中动态加载log4j2文件:-
在应用程序的mule deploy.properties
中设置log4j2文件路径,如:-
log.configFile=E:\common-log4j2.xml
通过Spring重新配置日志管理器,以编程方式在应用程序中加载log4j2.xml,并从定义的路径加载我们自己的log4j2.xml
文件:-
参考:-
这将是在服务器级别,而我正在寻找应用程序级别的控制。Mule中是否有“在启动时执行此流”的内容?log.configFile用于指定自定义日志配置,但无法基于环境动态加载,因为无法在另一个属性文件中设置env属性(mule deploy.properties)。唯一的方法似乎是#2选项,其中可以在spring配置中使用env属性来加载特定于环境的log4j配置,例如log4j2-{env}.xml。接受这一正确答案。