logback-LogStash-在Logback中添加属性并将其发送到Logstash [英] LogBack - LogStash - Add properties in the logback and send them to Logstash
本文介绍了logback-LogStash-在Logback中添加属性并将其发送到Logstash的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在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}(?:
+(?<stacktrace>(?:.|
|
)+))?$"
}
}
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文件中的应用程序名称属性作为字段添加?
推荐答案
来自LOGSTASH-LOGBACK-ENCORER文档:
默认情况下,Logback的上下文(ch.qos.logback.core.Context)的每个属性(如hostname)将在LoggingEvent中显示为一个字段。可以通过在编码器/布局/附加器配置中指定FALSE来禁用此功能。默认情况下,您的Logback属性是本地作用域,不包括在内。尝试将它们设置为
scope="context"
。
<property name="spring.application.name" value="service" scope="context"/>
这篇关于logback-LogStash-在Logback中添加属性并将其发送到Logstash的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文