java - log4.xml 中用于访问 java 系统属性的表达式语言是什么?

标签 java xml log4j expression

我在 log4j.xml 中使用表达式来设置严重级别,但是我想知道我还能用这些表达式做什么。例如添加一些逻辑或更复杂的解析,我找不到log4j.xml文件支持的表达语言是什么。

例如,我想设置一个名称是动态的属性,具体取决于所配置的应用程序的上下文,这样我可以使用 java 系统属性将该配置传达给同一应用程序的多个版本的 log4j 配置:

Application version 1 --> app1.mypackage.severity
Application version 2 --> app2.mypackage.severity

appX 在初始化时由应用程序容器解析,因此我的问题可以简化为知道如何连接两个表达式的值,但我找不到 log4j 使用的表达式语言是什么。

我想要这样的东西:

...
<logger name="mypackage" additivity="false">
    <level value="${$appVersion+$mypackage.severity}" />
    <appender-ref ref="dailyRollingFile" />
</logger>
...

最佳答案

http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution

本页介绍如何在 log4j 配置文件中使用变量。

大多数 apache 工具的基本格式是相同的,例如 Maven 和 ant。

${name}

其中 name 被定义为某处的属性(环境变量、系统属性、本地属性等)。检查链接以查看设置属性的各种方法。

要在变量中嵌入变量,您可以在配置 xml 中使用本地属性定义,例如:

<Properties>
  <Property name="loggerlevel">${appVersion}${mypackage:severity}</Property>
</Properties>
...
<logger name="mypackage" additivity="false">
  <level value="${loggerlevel}" />
  <appender-ref ref="dailyRollingFile" />
</logger>

关于java - log4.xml 中用于访问 java 系统属性的表达式语言是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27115720/

相关文章:

javascript - 从 JavaScript 和 XML 中的 selectNodes 获取属性?

java - Log4j:从哪里初始化自身

java - 将 AppContext 实现为 Play 插件

java - 当响应始终正确关闭时如何重构代码?

xml - Postgresql - 在 select 中使用 xpath 时如何将 xml 数据类型更改为整数

java - 失败 - 上下文路径/Perpustakaan 中的应用程序无法启动

java - Weblogic java.lang.ClassNotFoundException : org. apache.log4j.Logger - Maven 项目

java - 如何在 log4j.properties 文件中设置占位符的值?

java - 当第一个策略和恢复策略都失败时 Java 中的异常组合

java - 具有所有基本自动连线服务的基本 Controller