gpt4 book ai didi

java - Logstash-logback 事件特定的自定义字段(使用 StructuredArguments)未添加到 JSON

转载 作者:行者123 更新时间:2023-12-03 18:45:30 25 4
gpt4 key购买 nike

我正在尝试使用 logstash documentation 将特定于事件的字段添加到记录器语句之一.我的记录器声明如下:

LOGGER.info("Executed REST request time={}ms", StructuredArguments.value("request_time_ms", elapsedTimeMs));

根据文档:

StructuredArguments will be included in the JSON output if using LogstashEncoder/Layout or if using composite encoders/layouts with the arguments provider



这意味着 StructuredArguments只要我使用 LogstashEncoder 就可以正常工作:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
</encoder>
</appender>

但还是 request_time_ms输出 JSON 中缺少:
{
"@timestamp": "2018-09-20T14:00:43.560+03:00",
"@version": 1,
"appname": "my_app",
"level": "INFO",
"level_value": 20000,
"logger_name": "com.example.MetricsAspect",
"message": "Executed REST request time=258ms",
"thread_name": "main"
}

最佳答案

看来StructuredArguments即使您使用 LogstashEncoder 也不会包含在 JSON 中直到您明确添加 ArgumentsJsonProvider :

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<provider class="net.logstash.logback.composite.loggingevent.ArgumentsJsonProvider"/>
</encoder>
</appender>

现在它按预期工作:
{
"@timestamp": "2018-09-20T15:43:11.019+03:00",
"@version": 1,
"appname": "my_app",
"level": "INFO",
"level_value": 20000,
"logger_name": "com.example.MetricsAspect",
"message": "Executed REST request time=337ms",
"request_time_ms": 337,
"thread_name": "main"
}

关于java - Logstash-logback 事件特定的自定义字段(使用 StructuredArguments)未添加到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52426121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com