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

Java 在运行时检索log4j2配置属性(如果已定义),java,log4j2,Java,Log4j2,应用程序的标准log4j2.xml文件包括一个配置时属性 <Properties> <Property name="log-path">/some/writable/path/on/server</Property> </Properties> /服务器上的某些/writable/path/ 然后在附加器中引用。到目前为止效果很好 我需要得到这个属性的值,它在编译时是未知的,甚至在运行时也不能保证被定义 如果定义了“log path”

应用程序的标准
log4j2.xml
文件包括一个配置时属性

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

/服务器上的某些/writable/path/
然后在附加器中引用。到目前为止效果很好

我需要得到这个属性的值,它在编译时是未知的,甚至在运行时也不能保证被定义

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

如何完成此任务?

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

感谢您将其他问题链接起来,这可能是重复的。不幸的是,这只是部分帮助。当然,如果我将“logpath”属性定义为系统属性,我将能够轻松地从Java应用程序和log4j中读取,但是接下来我需要与发布和配置软件的人员展开讨论。这不是一项容易的任务。我会考虑这样的改变,但是我已经明确地要求从Log4J配置读取该属性。file@usr-本地-ΕΗΕΕΕΕ∧∧Ν顺便说一句,它的ΕΕΕ∧∧∧ΝΝ不是ΕΗ∧ΝΕΕΗ∧∧Ν92,在windows中使用希腊文键盘布局和物理QWERY键盘来键入梯队-用o-mega(大)替换o-micron(小):-):-):-)可能重复感谢链接其他问题。不幸的是,这只是部分帮助。当然,如果我将“logpath”属性定义为系统属性,我将能够轻松地从Java应用程序和log4j中读取,但是接下来我需要与发布和配置软件的人员展开讨论。这不是一项容易的任务。我会考虑这样的改变,但是我已经明确地要求从Log4J配置读取该属性。file@usr-本地-ΕΗΕΕΕΕ∧∧Ν顺便说一句,它的ΕΕΕ∧∧∧ΝΝ不是ΕΗ∧ΝΕΕΗ∧∧Ν92,在windows中使用希腊文键盘布局和物理QWERY键盘来键入梯队-用o-mega(大)替换o-micron(小):-):-):-)这也是我的第一个想法,但没有实现!这也是我的第一个想法,但它没有发生!
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");