是否可以在Log4J2 JSON配置中添加注释

时间:2017-10-04 16:37:36

标签: json log4j2

我使用JSON格式配置了log4j2,例如:

{
  "configuration": {
    "monitorInterval": 60,
    "properties": {
      ...
    },
    "appenders": {
      ...
    },

    "loggers": {
      "asyncRoot": {
        ...

等。 配置非常复杂,因此需要对将来尝试理解或更改它的人进行一些澄清。

如果此配置是XML格式,我可以指定注释,明确配置中的每个部分(将配置更改为XML不是一个选项)。但是JSON没有评论这个概念,推荐是to specify comments as data。 E.g:

{
  "configuration": {
    "monitorInterval": 60,
    "_comment_": "here we go",
    "properties": {

但是我不确定在log4j2情况下这样的东西是不是一个好主意:它不是让配置更清晰,而是实际上增加了它的批量,这些评论与实际数据没有明显的分离,我不是确定它是否会导致任何稳定性/性能问题解析配置(如您所见,此配置每60秒解析一次,所以...)

是否有任何常见/推荐的方法来描述log4j2的配置? 或者您是否成功测试/使用上述方法(评论为数据)?

提前致谢。

2 个答案:

答案 0 :(得分:1)

可以在object配置文件中添加内嵌注释。你可以用以下方式写评论 -

__dict__

这是因为log4j2 JSON使用{ "configuration": { // this is comment "monitorInterval": 60, // set monitor interval here "properties": { ... }, "appenders": { ... }, "loggers": { // set logger details here "asyncRoot": { ... 来解析log4j2配置文件,而Jackson可以选择在JSON中启用评论。

虽然以这种方式编写注释可能会显示IDE中的错误,例如eclipse,因为Jackson标准不支持注释。

答案 1 :(得分:0)

其他信息:Log4J2在JsonConfiguration implementation中明确启用了评论:

protected ObjectMapper getObjectMapper() {
    return new ObjectMapper().configure(JsonParser.Feature.ALLOW_COMMENTS, true);
}

它引用com.fasterxml.jackson.core的属性,该属性描述了支持哪些注释的详细信息以及原因:

/**
* Feature that determines whether parser will allow use
* of Java/C++ style comments (both '/'+'*' and
* '//' varieties) within parsed content or not.
*<p>
* Since JSON specification does not mention comments as legal
* construct,
* this is a non-standard feature; however, in the wild
* this is extensively used. As such, feature is
* <b>disabled by default</b> for parsers and must be
* explicitly enabled.
*/
ALLOW_COMMENTS(false)

Log4J中的任何地方都没有记录功能,同时请注意默认情况下Jackson已将其禁用。