1

我一直在查看这三个站点,了解如何使用 log4j2 创建地图查找(或任何其他查找):

我理解我正在阅读的内容背后的总体思路,我只是很难将所有的点点滴滴放在一起。

目标

为了能够以某种方式将变量放置在 log4j2.xml 文件中,该文件在配置时或运行时用资源包中的值替换该变量。这是我到目前为止所拥有的:

配置文件

在此处输入图像描述

查找类

在此处输入图像描述

getValue(key) 方法在资源包中查找与该键关联的电子邮件值。@Plugin 名称是“map”,如果我没看错的话,它与 .xml 文件中也是“map”的前缀有关”。那么,“error.notification.emails”不会被传递到 MapPropertiesLookup 类的 lookup(String key) 方法中吗?我需要做什么才能使其正常工作?

4

2 回答 2

3

是的,map 是您正在创建的查找的名称。由于 Log4j 已经有一个名为 map 的 Lookup,因此创建另一个会导致问题。

是的,error.notification.emails 应该作为键值传递给 Lookup。假设 getValue(key) 有效,如果它被命名为其他名称,您的查找可能会起作用。

但是,提交 Jira 并请求 ResourceBundleLookup 可能更有意义,其中语法可能类似于:${bundle:bundleName:key}。当然,“bundleName:key”将作为键传递给查找,并将键拆分为组件部分。

如果您还有其他问题,可以考虑在 Log4j 开发人员邮件列表中提问。

于 2013-10-09T17:13:23.793 回答
3

我为下一个版本添加了一个新的查找(无论是 beta 版还是候选版):

提交的修订版 1531064。

如果您从源代码构建 Log4J,您现在可以使用它。如果您构建站点,格式会记录在案,它的使用如下:

${bundle:BundleName:BundleKey}

例如:

${bundle:com.domain.Messages:MyKey}

java.util.ResourceBundle 类将在类路径中查找 com/domain/Messages.properties。

我们的 JIRA 问题:https ://issues.apache.org/jira/browse/LOG4J2-420

于 2013-10-10T18:15:57.643 回答