如何为 Filebeat 配置 JBoss JsonFormatter (WildFly 14)

sha*_*vah 2 java logging jboss wildfly filebeat

我有 Filebeat 从标准输出中提取日志。我想确保我的日志输出为 JSON,以便可以正确解析它们。

到目前为止,这是我发现的:

  • org.jboss.logmanager.formatters 没有 JSON 格式化程序
  • 有一个提供 JsonFormatter 类的“扩展”模块
  • 我可以通过执行以下操作在我的 logging.properties 中使用它:
handler.CONSOLE=org.jboss.logmanager.handlers.ConsoleHandler
handler.CONSOLE.properties=autoFlush,target
handler.CONSOLE.autoFlush=true
handler.CONSOLE.formatter=JSON-FORMATTER
handler.CONSOLE.target=SYSTEM_OUT

formatter.JSON-FORMATTER=org.jboss.logmanager.ext.formatters.JSONFormatter
Run Code Online (Sandbox Code Playgroud)

我需要知道:

  • 我是否缺少此配置的任何内容?
  • 如何自定义 JSON 输出(即添加或删除字段)?

Jam*_*ins 5

json-formatterWildFly 14 中有一个。我不建议编辑logging.properties. 以下 CLI 命令是配置json-formatter.

/subsystem=logging/json-formatter=json:add(exception-output-type=formatted, pretty-print=false, meta-data={label=value})
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=json)
Run Code Online (Sandbox Code Playgroud)

请注意,该meta-data属性只是一个以逗号分隔的键/值对。

如何自定义 JSON 输出(即添加或删除字段)?

您实际上只能添加元数据或更改字段名称。但是您不能删除字段。

  • `sudo bash jboss-cli.sh -c "/subsystem=logging/json-formatter=json:add(exception-output-type=formatted, Pretty-print=true, meta-data={Service=demo})"`应该管用。如果您从命令行执行所有操作,请确保将 CLI 连接到正在运行的服务器并引用该命令。 (2认同)