【问题标题】:Mel expression in mule anypoint Studiomule anypoint Studio中的mel表达式
【发布时间】:2015-03-06 06:57:30
【问题描述】:

是否有 MEL 表达式来查找日志级别并将其存储在字符串变量中。我搜索了谷歌,但没有找到。谁能帮帮我?

【问题讨论】:

    标签: mule esb mule-studio


    【解决方案1】:

    通过 MEL,您可以使用访问记录器

    #[org.apache.commons.logging.LogFactory.getLog(loggerName)]
    

    Log接口不包含任何直接获取其等级的方法,但是可以知道某个等级是否处于活动状态。因此,您可以使用以下表达式来获取 MEL 中的记录器级别:

    #[log = org.apache.commons.logging.LogFactory.getLog(loggerName); return log.isTraceEnabled() ? "TRACE" : log.isDebugEnabled() ? "DEBUG" : log.isInfoEnabled() ? "INFO" : log.isWarnEnabled() ? "WARN" : log.isErrorEnabled() ? "ERROR" : log.isFatalEnabled() ? "FATAL" : "OFF"]
    

    【讨论】:

    • 如果我想从 log 4j 属性或 log 4j xml 中获取日志级别,我可以用什么代替日志名称
    • @SatheeshKumar 如果要获取root级别,可以尝试使用root作为日志名。如果您对在应用程序中使用 log4j 感到满意(不考虑更改为其他日志记录机制),您可以直接到达 log4j 工厂并使用以下表达式获取根级别 #[org.apache.log4j.Logger.getRootLogger().getLevel().toString()]
    【解决方案2】:

    由于多种原因,无法做到这一点。首先没有日志级别之类的东西,而是包或类的日志级别和默认日志级别的组合,然后每个附加程序也将具有最低日志级别,等等。

    Mule 也通常使用 SLF4J,但并非所有代码都将使用。更复杂的是,在即将发布的 3.6 中,日志系统发生了很大变化。

    如果我必须这样做,我可能会将您的 log4j.properties 作为具有级别设置的 maven 处理资源,然后还会有一个属性文件,骡子应该将其用作属性占位符,该属性也将设置作为已处理的资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 2018-08-20
      • 2013-06-13
      • 2016-10-09
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多