gpt4 book ai didi

spring-boot - LogBack - LogStash - 在 logback 中添加属性并将它们发送到 Logstash

转载 作者:行者123 更新时间:2023-12-03 23:14:29 27 4
gpt4 key购买 nike

我在 SpringBoot 应用程序中使用 Logback 和 Logstash。

在 logback.xml 我有一个带有服务名称的属性,就像:

<configuration>

<include resource="org/springframework/boot/logging/logback/defaults.xml" />

<include resource="org/springframework/boot/logging/logback/console-appender.xml" />

<property name="spring.application.name" calue="service"/>

<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:9600</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>

<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="stash" />
</root>

</configuration>

Logstash conf 文件是这样的:
input{ tcp{
port=> 9600
host=>logstash
}
}

filter {
grok {
match => {
"message" =>
"^%{TIMESTAMP_ISO8601:timestamp}\s+%{LOGLEVEL:level}\s+%{NUMBER:pid}\s+---\s+\[\s*%{USERNAME:thread}\s*\]\s+%{JAVAFILE:class}\s*:\s*%{DATA:themessage}(?:\n+(?<stacktrace>(?:.|\r|\n)+))?$"
}
}
date {
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSS" ]
}
mutate {
remove_field => ["@version"]
add_field => {
"appid" => "%{[path]}"
}
add_field => {
"levell" => "level"
}
add_field => {
"mensage" => "message"
}
}
}
output{

elasticsearch {
hosts => ["elasticsearch"]
index => "indice"
}
stdout{}
}

如何将 logback 文件中的应用程序名称属性添加为字段?

最佳答案

您可以为 LogstashEncoder 配置自定义字段,如下所示

<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.99.100:4560</destination>

<!-- encoder is required -->
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"${appName}"}</customFields>
</encoder>
</appender>

例如,对于 spring boot 应用程序,您可以使用获取 spring 范围属性如下
<springProperty name="appName" source="spring.application.name"/>

或者从 .properties 文件中导入属性
<property  resource="application.properties" />

关于spring-boot - LogBack - LogStash - 在 logback 中添加属性并将它们发送到 Logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41282864/

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