在我的Log4j2配置文件中,我有以下内容:
但是返回的地图有“主机名”和“上下文名称”键。而不是我正在寻找的属性地图。 我想我可能可以从rootLogger获取它:
但是这会导致 NullPointerException,因为 getPropertyList 返回 null。
那么,我该如何访问名为“baseDir”的属性,以便可以编程方式创建一个新的记录器,但使用不同的基目录?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" strict="true" name="XMLConfig" packages="org.apache.logging.log4j.test">
<Properties>
<Property name="baseDir">log-dir/</Property>
<Property name="defaultLogfileName">default-log-file</Property>
</Properties>
现在,在我的一些代码中,我创建自定义记录器。我需要访问"baseDir"的值并更改它。我尝试使用上下文中的getProperties
来实现:
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration configuration = context.getConfiguration();
configuration.getProperties();
但是返回的地图有“主机名”和“上下文名称”键。而不是我正在寻找的属性地图。 我想我可能可以从rootLogger获取它:
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration configuration = context.getConfiguration()
for (Property p : configuration.getRootLogger().getPropertyList())
{
...
}
但是这会导致 NullPointerException,因为 getPropertyList 返回 null。
那么,我该如何访问名为“baseDir”的属性,以便可以编程方式创建一个新的记录器,但使用不同的基目录?