我正在尝试使用logstash 文档将特定于事件的字段添加到记录器语句之一。我的记录器声明如下:LOGGER.info("Executed REST request time={}ms", StructuredArguments.value("request_time_ms", elapsedTimeMs));根据文档:如果使用 LogstashEncoder /Layout 或使用复合编码器/布局和参数提供程序,则StructuredArguments 将包含在 JSON 输出中这意味着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"}
1 回答
开满天机
TA贡献1786条经验 获得超13个赞
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"
}
添加回答
举报
0/150
提交
取消