【发布时间】:2015-03-06 06:57:30
【问题描述】:
是否有 MEL 表达式来查找日志级别并将其存储在字符串变量中。我搜索了谷歌,但没有找到。谁能帮帮我?
【问题讨论】:
标签: mule esb mule-studio
是否有 MEL 表达式来查找日志级别并将其存储在字符串变量中。我搜索了谷歌,但没有找到。谁能帮帮我?
【问题讨论】:
标签: mule esb mule-studio
通过 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"]
【讨论】:
#[org.apache.log4j.Logger.getRootLogger().getLevel().toString()]
由于多种原因,无法做到这一点。首先没有日志级别之类的东西,而是包或类的日志级别和默认日志级别的组合,然后每个附加程序也将具有最低日志级别,等等。
Mule 也通常使用 SLF4J,但并非所有代码都将使用。更复杂的是,在即将发布的 3.6 中,日志系统发生了很大变化。
如果我必须这样做,我可能会将您的 log4j.properties 作为具有级别设置的 maven 处理资源,然后还会有一个属性文件,骡子应该将其用作属性占位符,该属性也将设置作为已处理的资源。
【讨论】: