有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将JsonLayout添加到log4j2 json配置

我试图以JSON格式重定向日志的输出,因此,我有一个log4j2的JSON配置。我知道我应该使用JsonLayout,但我没有找到任何方法将其应用到我的配置中。这是我的日志4J2。json:

{
  "Configuration": {
    "status": "info",
    "Appenders": {
      "Console": {
        "name": "Console",
        "target": "SYSTEM_OUT",
        "PatternLayout": {
          "Pattern": "%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} [%t] %-5level [%logger{1.}] - %msg%n"
        }
      }
    },
    "Loggers": {
      "Root": {
        "level": "info",
        "AppenderRef": [
          {
            "ref": "Console"
          }
        ]
      }
    }
  }
}

你能帮我把这个添加到我的配置文件中吗


共 (2) 个答案

  1. # 1 楼答案

    这里有一个工作示例,您只需要JSONLayout,这是用于json事件日志记录的Layout的一个简化

    {
      "configuration": {
        "name": "log-enrichment",
        "appenders": {
          "RollingFile": {
            "name": "rollingFile",
            "fileName": "enrichment.log",
            "filePattern": "%d{MM-dd-yy-HH-mm-ss}-%i.log",
            "JSONLayout": {
              "complete": false,
              "compact": false,
              "eventEol": true
            },
            "SizeBasedTriggeringPolicy": {
              "size": "100 MB"
            },
            "DefaultRolloverStrategy": {
              "max": "5"
            }
          }
        },
        "loggers": {
          "root": {
            "level": "DEBUG",
            "appender-ref": {
              "ref": "rollingFile"
            }
          }
        }
      }
    }
    
  2. # 2 楼答案

    这里有一个例子。您应该查看http://logging.apache.org/log4j/2.x/manual/layouts.html#JSONLayout中可以使用的选项。此外,配置文件不必使用JSON来使用JsonLayout。它可以是XML、YAML或属性文件

    {
      "Configuration": {
        "status": "info",
        "Appenders": {
          "Console": {
            "name": "Console",
            "target": "SYSTEM_OUT",
            "PatternLayout": {
              "Pattern": "%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} [%t] %-5level [%logger{1.}] - %msg%n"
            } 
          },
          "File" : {
            "name" : "file",
            "fileName" : "${env:logdir}/app.log",
            "JsonLayout" : {
              "complete" : "true"
            }
          }
        },
        "Loggers": {
          "Root": {
            "level": "info",
            "AppenderRef": [
              {
                "ref": "Console"
              },
              {
                "ref" : "File"
              }
            ]
          }
        }
      }
    }