在运行时检索log4j2配置属性(如果已定义)

时间:2016-06-07 10:28:30

标签: java log4j2

我们的应用程序的标准log4j2.xml文件包含配置时属性

<Properties>
    <Property name="log-path">/some/writable/path/on/server</Property>
</Properties>

然后在appenders中引用。到目前为止工作正常。

我需要获取此属性的值,该属性在编译时是未知的,甚至不能保证在运行时定义。

如果已定义,我需要从某个工具获取“log-path”属性。否则null是一个很好的返回值。

我该如何完成这项任务?

2 个答案:

答案 0 :(得分:3)

final LoggerContext loggerContext = (LoggerContext) LogManager.getContext(true);
final Configuration config = loggerContext.getConfiguration();
final StrSubstitutor strSubstitutor = config.getStrSubstitutor();
final StrLookup variableResolver = strSubstitutor.getVariableResolver();
final String propertyValue = variableResolver.lookup("propertyName");

答案 1 :(得分:2)

Map<String, String> properties = ((LoggerContext) LogManager.getContext(false)).getConfiguration().getProperties();