0

私はSpringBootアプリケーションでLogbackとLogstashを使用しています。私はサービスの名前のプロパティを持っている、などであるlogback.xmlでLogBack - LogStash - ログバックにプロパティを追加してLogstashに送信

<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{} 
} 

私が行うことができますどのようにフィールドとしてログバックファイルからアプリケーション名のプロパティを追加しますか? logstash-logback-エンコーダのドキュメントから

答えて

0

:デフォルトでは

、Logbackのコンテキスト(ch.qos.logback.core.Context)の各プロパティ、ホスト名などは、内のフィールドとして表示されますLoggingEvent。これは、エンコーダー/レイアウト/アペンダー設定でfalseを指定することで無効にすることができます。

デフォルトでは、ログバックプロパティはローカルスコープであり、含まれません。それらをscope="context"に設定してみてください。

<property name="spring.application.name" value="service" scope="context"/> 
+0

ありがとう@roby!プロパティはログに表示されますが、 "メッセージ"フィールドは表示されません。私はフィールドとしてのプロパティを持って、木場でログをフィルタリングしたい。あなたはそれをする方法を知っていますか? これをlogastash confファイルに書き込もうとしましたが、動作しませんでした: 'add_field => { " service "=> [" @ spring.application.name "] } – AleGallagher

1

春ブートアプリケーションのために、例えば

<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> 

を次のようにあなたがLogstashEncoderのためのカスタムフィールドを設定することができ

<springProperty name="appName" source="spring.application.name"/> 

またはその他を次のように春のスコープのプロパティを取得使用することができます.propertiesファイルからのインポートプロパティ

<property resource="application.properties" /> 
関連する問題