ログバックゲルフ
追加の依存関係を持たない GELF (Graylog Extended Log Format) メッセージを送信するためのログバック アペンダー。
特徴
- UDP (チャンクあり)
- TCP (TLS 暗号化ありまたはなし)
- HTTP
- GZIP および ZLIB 圧縮 (UDP および HTTP モード)
- クライアント側の負荷分散 (ラウンドロビン)
- MDC (マップされた診断コンテキスト) の転送
- 発信者データの転送
- 静的フィールドの転送
- 例外の根本原因の転送
- Logback 以外にランタイム依存関係はありません
要件
例
単純な UDP 構成:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfUdpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
< root level = " debug " >
< appender-ref ref = " GELF " />
</ root >
</ configuration >
単純な TCP 構成:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
TLS を使用したシンプルな TCP 構成:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpTlsAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
単純な HTTP 構成:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfHttpAppender " >
< uri >https://my.server:12201/gelf</ uri >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
サンプル ディレクトリでさらに高度なサンプルを見つけてください。
構成
アペンダー
de.siegmar.logbackgelf.GelfUdpAppender
- GraylogHost : Graylog サーバーの IP またはホスト名。ホスト名が複数の IP アドレスに解決される場合は、ラウンドロビンが使用されます。
- GraylogPort : Graylog サーバーのポート。デフォルト: 12201。
- maxChunkSize : GELF チャンクの最大サイズ (バイト単位)。デフォルトのチャンク サイズは 508 です。これにより、IP パケットの断片化が防止されます。これは推奨される最小値でもあります。サポートされる最大チャンク サイズは 65,467 バイトです。
- CompressionMethod : 使用する圧縮方法 (NONE、GZIP または ZLIB)。デフォルト: GZIP。
- messageIdSupplier : GELF UDP プロトコルで必要な一意のメッセージ ID を提供するメカニズム。デフォルト:
de.siegmar.logbackgelf.MessageIdSupplier
。 - encoder : 以下のエンコーダ設定を参照してください。
de.siegmar.logbackgelf.GelfTcpAppender
- GraylogHost : Graylog サーバーの IP またはホスト名。ホスト名が複数の IP アドレスに解決される場合は、ラウンドロビンが使用されます。
- GraylogPort : Graylog サーバーのポート。デフォルト: 12201。
- connectTimeout : 接続の確立を待機する最大時間 (ミリ秒単位)。値 0 を指定すると、接続タイムアウトが無効になります。デフォルト: 15,000 ミリ秒。
- socketTimeout : ソケットの読み取り時にブロックされる最大時間 (ミリ秒単位)。値 0 はソケット タイムアウトを無効にします。デフォルト: 5,000 ミリ秒。
- reconnectInterval : 既存の接続が閉じられ、再度開かれた後の時間間隔 (秒単位)。値 -1 は自動再接続を無効にします。デフォルト: 60 秒。
- maxRetries : 再試行の数。値 0 を指定すると、再試行が無効になります。デフォルト: 2。
- retryDelay : 再試行間の時間 (ミリ秒単位)。 maxRetries が 0 の場合は無視されます。デフォルト: 3,000 ミリ秒。
- poolSize : 同時 TCP 接続の数 (最小 1)。デフォルト: 2。
- poolMaxWaitTime : プールからの接続が使用可能になるまで待機する最大時間 (ミリ秒単位)。値 -1 はタイムアウトを無効にします。デフォルト: 5,000 ミリ秒。
- poolMaxIdleTime : プールされた接続が「古い」と見なされ、再利用されなくなるまでアイドル状態でいられる最大時間 (秒単位)。値 -1 は、最大アイドル時間機能を無効にします。デフォルト: -1 (無効)。
- encoder : 以下のエンコーダ設定を参照してください。
de.siegmar.logbackgelf.GelfTcpTlsAppender
- GelfTcpAppender のすべて
- insecure : true の場合、TLS 証明書の検証をスキップします。運用環境ではこれを使用しないでください。デフォルト: false。
de.siegmar.logbackgelf.GelfHttpAppender
- uri : Graylog サーバーの HTTP(s) URI (例: https://my.server:12201/gelf)。
- insecure : true の場合、TLS 証明書の検証をスキップします。運用環境ではこれを使用しないでください。デフォルト: false。
- connectTimeout : 接続の確立を待機する最大時間 (ミリ秒単位)。値 0 を指定すると、接続タイムアウトが無効になります。デフォルト: 15,000 ミリ秒。
- requestTimeout : 応答を待つ最大時間 (ミリ秒単位)。値 0 はタイムアウトを無効にします。デフォルト: 5,000 ミリ秒。
- maxRetries : 再試行の数。値 0 を指定すると、再試行が無効になります。デフォルト: 2。
- retryDelay : 再試行間の時間 (ミリ秒単位)。 maxRetries が 0 の場合は無視されます。デフォルト: 3,000 ミリ秒。
- CompressionMethod : 使用する圧縮方法 (NONE、GZIP または ZLIB)。デフォルト: GZIP。
- encoder : 以下のエンコーダ設定を参照してください。
エンコーダ
de.siegmar.logbackgelf.GelfEncoder
- OriginHost : 元のホスト名 - 指定しない場合は自動検出されます。
- includeRawMessage : true の場合、生のメッセージ (引数プレースホルダー付き) も送信されます。デフォルト: false。
- includeKeyValues : true の場合、キーと値のペアも送信されます。デフォルト: true。
- includeMarker : true の場合、ログバック マーカーも送信されます。デフォルト: false。
- includeMdcData : true の場合、MDC キー/値も送信されます。デフォルト: true。
- includeCallerData : true の場合、呼び出し元データ (ソース ファイル、メソッド、クラス名、行) も送信されます。デフォルト: false。
- includeRootCauseData : true の場合、ログ メッセージとともに渡された例外の根本原因例外が root_cause_class_name フィールドと root_cause_message フィールドに公開されます。デフォルト: false。
- includeLevelName : true の場合、ログ レベル名 (例: DEBUG) も送信されます。デフォルト: false。
- levelNameKey : ログ レベル名に使用するキー (フィールド名など)。これは、includeLevelName が true の場合にのみ関係します。デフォルト: level_name。
- loggerNameKey : ロガー名に使用するキー (フィールド名など)。デフォルト: logger_name。
- threadNameKey : スレッド名に使用するキー (つまり、フィールド名)。デフォルト: thread_name。
- appendNewline : true の場合、システム依存の改行区切り文字が各メッセージの末尾に追加されます。これを TCP/UDP/HTTP アペンダと組み合わせて使用しないでください。これは、コンソールのログ記録にのみ有効です。
- shortMessageLayout : ショートメッセージ形式。デフォルト:
"%m%nopex"
。 - fullMessageLayout : 完全なメッセージ形式 (スタックトレース)。デフォルト:
"%m%n"
。 - numberAsString : 数値を文字列として記録します。デフォルト: false。
- staticFields : Graylog に送信する追加の静的フィールド。デフォルト: なし。
トラブルシューティング
問題がある場合は、デバッグ モードを有効にしてログを確認してください。
< configuration debug = " true " >
...
</ configuration >