【问题标题】:Dynamically selecting log4j2 configuration in Mule在 Mule 中动态选择 log4j2 配置
【发布时间】:2017-02-15 01:15:02
【问题描述】:

我浏览了 Mule Logging 文档,但不清楚如何为每个环境动态加载不同的日志记录配置文件。基本上我想控制跨环境的日志详细程度和同步/异步功能,因此寻找基于服务器环境属性变量动态选择属性文件的类似功能。

【问题讨论】:

    标签: mule log4j2


    【解决方案1】:

    您可以通过 external pathapplication classpath 在应用程序中动态加载 log4j2 文件的两种方法:-

    1. 在应用程序的mule-deploy.properties 中设置 log4j2 文件路径,例如:-

      log.configFile=E:\common-log4j2.xml

    2. 通过Spring重新配置日志管理器以编程方式在您的应用程序中加载log4j2.xml,并从您定义的路径加载我们自己的log4j2.xml文件:- 参考:-https://dzone.com/articles/getting-own-log4j2-file-for-mule-via-spring

    【讨论】:

    • log.configFile 用于指定自定义日志配置,但它不能基于环境动态加载,因为 env 属性不能在另一个属性文件(mule-deploy.properties)中设置。唯一的方法似乎是#2选项,其中可以在spring配置中使用env属性来加载特定于环境的log4j配置,例如log4j2-{env}.xml。接受这个作为正确答案。
    【解决方案2】:

    我没试过,但是你应该可以在启动Mule时在命令行中设置log4j配置文件,使用log4j.configuration系统属性。

    例如(在 Windows 中)如果您的环境变量称为 MULE-ENV,则添加 -Dlog4j.configuration=c:\some-path\log4j-%MULE-ENV%.xml

    请注意,有几个地方可以设置 - 如果使用 Mule 独立,则直接在命令行上(在这种情况下,我相信您需要 -M-Dlog4j.configuration=...),如果使用独立,则在 wrapper.conf 文件中,或在 VM 中在 Studio 中运行时,运行配置中“参数”选项卡的 params 部分。

    【讨论】:

    • 这将在服务器级别,而我希望在应用程序级别进行控制。
    【解决方案3】:

    您可以在您的应用程序中拥有一个 bean,该 bean 可以调用该方法来设置配置。您可以将环境名称作为参数传递给此 bean,它将选择与该环境关联的配置文件。您可以使用调用组件调用该方法,并在启动时执行此流程。 在流程执行之前,可以使用默认的日志记录配置。

    【讨论】:

    • Mule 中是否有任何内容可以“在启动时执行此流程”?
    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多