logback-LogStash-在Logback中添加属性并将其发送到Logstash [英] LogBack - LogStash - Add properties in the logback and send them to Logstash

查看:58
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆