如何使用Log4j2使用地图查找?(How to use map lookups using Log

2019-10-18 18:06发布

我一直在翻阅有关如何创建使用log4j2地图查找(或者任何其他的查找为此事)这三个地点:

  • http://logging.apache.org/log4j/2.x/manual/extending.html#Lookups
  • http://logging.apache.org/log4j/2.x/manual/lookups.html
  • http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution

我理解其背后是什么我读书,我只是有困难的时候把所有的零碎东西收拾起来的总体思路。

目标

为了能够把一个变量,某种形式的,在log4j2.xml文件,在配置时间或运行时,替换用的资源包中的值变量。 这是我到目前为止有:

配置文件

查找类

该的getValue(key)方法看起来与该key.The @Plugin名称相关联的“地图”,如果我已经正确读取,是关系到.xml文件,同时也是“地图前缀的电子邮件值的资源包”。 所以,不会“error.notification.emails”获得通过到查找(String键)方法在MapPropertiesLookup类? 我需要为了得到这个工作,做什么?

Answer 1:

是的,地图是要创建查找的名称。 由于Log4j中已经有一个名为查找地图生成另一个会造成很多问题。

是的,error.notification.emails应作为键值对查找进行传递。 假设的getValue(密钥)的作品您的查询可能会工作,如果它被命名为别的东西。

但是,它可能会更有意义,为您提交吉拉,并要求ResourceBundleLookup在句法可能是这样的:$ {束:束名称:关键}。 当然,“束名称:钥匙”将被传递到查找的关键,它会分裂成关键组成部分。

如果您还有其他问题,你可能会考虑要求对Log4j的开发者邮件列表。



Answer 2:

我说下一个版本新的查找(无论是测试版或发布候选版):

提交版本1531064。

如果你从源代码构建Log4j,你现在可以使用它。 格式文件,如果你建立的网站,它的使用方法如下:

${bundle:BundleName:BundleKey}

例如:

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

该java.util.ResourceBundle中的类将寻找在类路径中COM /域/ Messages.properties。

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



文章来源: How to use map lookups using Log4j2?