在Mule ESB的log4j2.xml中动态传递日志级别

时间:2016-12-07 17:19:31

标签: log4j mule

根据要求,我们希望在DEV和QA环境中记录INFO级别数据,但在生产和IAT环境中,我们只想记录ERROR级别数据。

根据mule指南,我们可以在$ {mule.home} / conf目录中配置log4j.xml,如上所述。这样我们就可以满足我们的要求,但是我们没有在配置级别进行更改,它需要大量的I& O团队批准。

因此,我们希望在应用程序级别的log4j2.xml中进行此更改。目前我正在传递日志级别的vm参数,如下所示。

我们也不想采用这种方法,因为我们需要与I& O团队合作,在服务器中配置log.level属性。 好的是,我们在所有具有DEV,QA,STG和PROD值的环境中都可以使用mule.env属性。

请您建议我可以根据mule.env值评估日志级别的任何其他方法吗?

<AsyncLogger name="org.glassfish.grizzly" level="${sys:log.level}"/>
<AsyncLogger name="org.asynchttpclient" level="${sys:log.level}"/>
<AsyncLogger name="httpclient.wire" level="${sys:log.level}"/>
<AsyncLogger name="com.ning.http.client.providers.grizzly" level="${sys:log.level}"/>
<AsyncLogger name="WageGarnishment" level="${sys:log.level}"/>
<AsyncLogger name="org.mule.modules.jobtrackingservices.generated.adapters.JobtrackingservicesConnectorConnectorConfigBasicAdapter" level="${sys:log.level}"/>
<AsyncLogger name="org.mule.module.http.internal.HttpMessageLogger" level="${sys:log.level}"/>
<AsyncLogger name="Main Flow" level="${sys:log.level}"/>
<AsyncLogger name="CDMValidator" level="FATAL"/>
<AsyncLogger name="com.adp.xyz.cdmvalidator.validator.BaseValidator" level="${sys:log.level}"/>
<AsyncLogger name="com.adp.xyz" level="${sys:log.level}"/>

2 个答案:

答案 0 :(得分:0)

似乎无法在部署时替换属性,因为log4j2对Mule属性一无所知。如果您使用Maven,则可以使用Maven Resource plugin在构建时替换属性。

答案 1 :(得分:0)

您的应用程序中可以有一个bean,它可以调用记录器的setLevel方法来设置日志级别。 您可以将环境名称或日志级别作为参数传递给此Bean。 您可以使用invoke组件调用该方法,并在启动时执行此流程。