logback - 如何更改 logback LogstashSocketAppender 中的标准字段名称?
问题描述
在我的 Spring 后端:标准日志字段名称是:“消息”和“级别”,并且 logback.xml 文件效果很好:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds">
<property resource="application.properties"/>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] <%-5level> [Backend] <%thread> &msg%n
</Pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="stdout"/>
</root>
</configuration>
问题: 如何使用LogstashSocketAppender将标准日志字段名称从“消息”更改为“日志消息”?
我已经尝试添加此附加程序:
<appender name="stash" class="net.logstash.logback.appender.LogstashSocketAppender">
<host>localhost</host>
<port>6002</port>
<customFields>
{
"timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}",
"component": "Backend",
"log-message": "%msg",
"log-level": "%-5level"
}</customFields>
</appender>
但我的输出看起来像这样:
{
"message":"correct log message here"
"log-message":"%msg" <--- BAD VALUE
解决方案
我已经通过使用模式做到了这一点:
<appender name="stash" class="net.logstash.logback.appender.LogstashSocketAppender">
<host>${logstash.host}</host>
<port>${logstash.port}</port>
<provider class="net.logstash.logback.composite.loggingevent.LoggingEventPatternJsonProvider">
<pattern>
{
"log-message": "%msg",
"component": "Backend",
"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
"log-level": "%-5level",
"thread-id": "%thread"
}
</pattern>
</provider>
</appender>
编辑:当然,你必须grok > match
在你的logstash中创建过滤器来监听这个模式。
推荐阅读
- c# - 从当前用户查询 BranchId
- python - 将 await 与 fastapi 一起使用
- python - Geodjango + PostGIS。以平方米为单位的聚合多边形面积
- android - Google Play 商店在 Android 虚拟设备上不断崩溃
- c# - 如何将 void 同步方法转换为异步方法?
- ip-address - Azure:ACI 没有 IP 地址
- kotlin - 带有 Intellij 的 Kotlin 不显示非 ascii 字符
- python - 我找不到使用 Python 处理 docx 中的新页面的方法
- python - How to randomly select two elements of a python list?
- google-sheets - 使用偏移量和数组公式转换数组