第100章 Log


ログコンポーネント

log: コンポーネントは、メッセージエクスチェンジを基礎となるロギングメカニズムに記録します。

URI 形式

log:loggingCategory[?options]
Copy to Clipboard Toggle word wrap
loggingCategory は使用するロギングカテゴリーの名前です。URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。
レジストリーからの Logger インスタンスの使用
Camel 2.12.4/2.13.1 以降、レジストリーに org.slf4j.Logger の単一インスタンスがある場合、loggingCategory はロガーインスタンスの作成に使用されなくなりました。代わりに、登録されたインスタンスが使用されます。また、?logger=#myLogger URI パラメーターを使用して特定の Logger インスタンスを参照することもできます。最終的には、登録済みおよび URI logger パラメーターがない場合、loggingCategory を使用してロガーインスタンスが作成されます。
たとえば、ログエンドポイントは通常、以下のように level オプションを使用してログ レベル を指定します。
log:org.apache.camel.example?level=DEBUG
Copy to Clipboard Toggle word wrap
デフォルトのロガーは、すべてのエクスチェンジ(通常のロギング)をログに記録します。しかし、Apache Camel には Throughput ロガーも含まれています。これは、groupSize オプションが指定されているたびに使用されます。
DSL へのログイン
DSL には直接 ログイン がありますが、目的が異なります。これは、軽量ログおよびヒューマンログを対象としています。詳細は、LogEIP を参照してください。

オプション

Expand
オプション デフォルト タイプ Description
level INFO 文字列 使用するロギングレベル。使用できる値は、ERRORWARNINFODEBUGTRACEOFFです。
marker null 文字列 Camel 2.9: 使用 するオプションのマーカー 名。
groupSize null 整数 スループットロギングのグループサイズを指定する整数。
groupInterval null 整数 指定した場合、この時間間隔(ミリ秒単位)でメッセージ統計をグループ化します。
groupDelay 0 整数 統計の初期遅延を設定します(ミリ秒単位)。
groupActiveOnly true boolean true の場合、新しいメッセージが時間間隔で受信されない場合に統計を非表示にします。false の場合は、メッセージトラフィックに関係なく統計を表示します。
logger ロガー Camel 2.12.4/2.13.1: 使用するレジストリーから org.slf4j.Logger へのオプションの参照。

フォーマット

ログにより、ログ行へのエクスチェンジの実行がフォーマットされます。デフォルトでは、ログは LogFormatter を使用してログ出力をフォーマットします。LogFormatter には以下のオプションが含まれます。
Expand
オプション デフォルト 説明
showAll false すべてのオプションをオンにするクイックオプション(マルチライン、maxChars を使用する場合は手動で設定する必要があります)。
showExchangeId false 一意のエクスチェンジ ID を表示します。
showExchangePattern true は、Message Exchange Pattern (略して MEP)を示しています。
showProperties false エクスチェンジプロパティーを表示します。
showHeaders false In メッセージヘッダーを表示します。
skipBodyLineSeparator
true
Camel 2.12.2: メッセージボディーをログに記録するときに行セパレーターをスキップするかどうか。これにより、はメッセージボディーを 1 行でログに記録できます。このオプションを false に設定すると、本文から行区切り文字が保持され、ボディー は としてログに記録され ます。
showBodyType true In body Java タイプを表示します。
showBody true In ボディーを表示します。
showOut false エクスチェンジに Out メッセージがある場合は、Out メッセージが表示されます。
showException false Apache Camel 2.0: エクスチェンジに例外がある場合は、例外メッセージを表示します(スタックトレースなし)。
showCaughtException false Apache Camel 2.0: エクスチェンジにキャッチされた例外がある場合は、例外メッセージを表示します(スタックトレースなし)。キャッチされた例外はエクスチェンジのプロパティーとして保存され、たとえば doCatch は例外をキャッチできます。Try Catch Finally を参照してください。
showStackTrace false Apache Camel 2.0: エクスチェンジに例外がある場合にスタックトレースを表示します。showAllshowException、または showCaughtException のいずれかが有効な場合にのみ有効です。
showFiles false Camel 2.9: Camel がファイルの本文を表示するかどうか(java.io.File など)。
showFuture false Camel で java.util.concurrent.Future ボディーを表示するかどうか。有効な場合、Camel は Future タスクが実行されるまで待機できる可能性があります。デフォルトでは待機しません。
showStreams false Camel 2.8: Camel がストリーム本文を表示するかどうか(java.io.InputStream など)。このオプションを有効にすると、このロガーによってストリームがすでに読み込まれているため、後でメッセージボディーにアクセスできないことがあります。これを修正するには、Stream Caching を使用する必要があります。
複数行 false true の場合、各情報が新しい行に記録されます。
maxChars 1 行に記録される文字数を制限します。デフォルト値は、Camel 2.9 以降の 10000 です。
ロギングストリーム本文
上記の showFiles または showStreams プロパティーをサポートしない古いバージョンの Camel では、代わりに CamelContext で以下のプロパティーを設定して、ストリームとファイル本文の両方をログに記録できます。
 camelContext.getProperties().put(Exchange.LOG_DEBUG_BODY_STREAMS, true);

Copy to Clipboard Toggle word wrap

通常のロガーの例

以下のルートでは、注文の処理前に DEBUG レベルで受信注文をログに記録します。
from("activemq:orders").to("log:com.mycompany.order?level=DEBUG").to("bean:processOrder");
Copy to Clipboard Toggle word wrap
または、Spring XML を使用してルートを定義します。
  <route>
    <from uri="activemq:orders"/>
    <to uri="log:com.mycompany.order?level=DEBUG"/>
    <to uri="bean:processOrder"/>
  </route>
Copy to Clipboard Toggle word wrap

フォーマッターサンプルを持つ通常のロガー

以下のルートでは、注文が処理される前に INFO レベルで受信注文をログに記録します。
from("activemq:orders").
    to("log:com.mycompany.order?showAll=true&multiline=true").to("bean:processOrder");
Copy to Clipboard Toggle word wrap

groupSize サンプルを使用したスループットロガー

以下のルートでは、10 メッセージ別にグループ化された DEBUG レベルで受信注文のスループットをログに記録します。
from("activemq:orders").
    to("log:com.mycompany.order?level=DEBUG&groupSize=10").to("bean:processOrder");
Copy to Clipboard Toggle word wrap

groupInterval サンプルを使用したスループットロガー

このルートは、メッセージ統計が 10 ごとにログに記録され、最初の 60 秒の遅延と統計がメッセージトラフィックがなくても表示されます。
from("activemq:orders")
    .to("log:com.mycompany.order?level=DEBUG&groupInterval=10000&groupDelay=60000&groupActiveOnly=false")
    .to("bean:processOrder");
Copy to Clipboard Toggle word wrap
以下がログに記録されます。
"Received: 1000 new messages, with total 2000 so far. Last group took: 10000 millis which is: 100 messages per second. average: 100"
Copy to Clipboard Toggle word wrap

ロギング出力の完全なカスタマイズ

Camel 2.11 から利用可能
フォーマット セクションで説明されているオプションを使用すると、ロガーの出力の多くを制御できます。ただし、ログの行は常に以下の構造に従います。
Exchange[Id:ID-machine-local-50656-1234567901234-1-2, ExchangePattern:InOut, 
Properties:{CamelToEndpoint=log://org.apache.camel.component.log.TEST?showAll=true, 
CamelCreatedTimestamp=Thu Mar 28 00:00:00 WET 2013}, 
Headers:{breadcrumbId=ID-machine-local-50656-1234567901234-1-1}, BodyType:String, Body:Hello World, Out: null]
Copy to Clipboard Toggle word wrap
この形式は、おそらく必要なため、場合によっては適さない場合があります。
  • ... 出力されたヘッダーとプロパティーをフィルターリングすると、知見と詳細度のバランスが取れます。
  • ... 最も読み取り可能と見なされるものに合わせてログメッセージを調整します。
  • ...Splunk などのログマイニングシステムによるダイジェストのためにログメッセージを調整します。
  • ... 特定のボディータイプの出力が異なります。
  • ... etc.
絶対カスタマイズが必要な場合は、ExchangeFormatter インターフェイスを実装するクラスを作成できます。完全なエクスチェンジにアクセスできる format (Exchange) メソッド内で、必要な正確な情報を選択して抽出し、カスタム方式でフォーマットして返すことができます。戻り値は最終的なログメッセージになります。
Log コンポーネントには、以下のいずれかの方法でカスタム ExchangeFormatter を選択できます。
レジストリーで LogComponent を明示的にインスタンス化します。
<bean name="log" class="org.apache.camel.component.log.LogComponent">
   <property name="exchangeFormatter" ref="myCustomFormatter" />
</bean>
Copy to Clipboard Toggle word wrap
設定に対する規則:
単に Bean を logFormatter という名前で登録します。Log コンポーネントは、自動的に取得できるほどインテリジェントなものです。
<bean name="logFormatter" class="com.xyz.MyCustomExchangeFormatter" />
Copy to Clipboard Toggle word wrap
注記: Exchange フォーマッターCamel コンテキスト内のすべてのログエンドポイントに適用されます。異なるエンドポイントに異なる ExchangeFormatters が必要な場合は、必要に応じて LogComponent をインスタンス化し、関連する Bean 名をエンドポイント接頭辞として使用します。
カスタムログフォーマッターの使用時に Camel 2.11.2/2.12 以降では、カスタムログフォーマッターに設定されるログ URI でパラメーターを指定できます。ただし、logFormatter をプロトタイプスコープとして定義し、異なるパラメーターがある場合は共有しないようにします。以下に例を示します。
<bean name="logFormatter" class="com.xyz.MyCustomExchangeFormatter" scope="prototype"/>
Copy to Clipboard Toggle word wrap
その後、さまざまなオプションでログ URI を使用して Camel ルートを設定できます。
<to uri="log:foo?param1=foo&aram2=100"/>
...
<to uri="log:bar?param1=bar&aram2=200"/>
Copy to Clipboard Toggle word wrap

OSGi でのログコンポーネントの使用

Camel 2.12.4/2.13.1 以降の改善
OSGi 内で Log コンポーネントを使用する場合(Karaf でなど)、基礎となるロギングメカニズムは PAX ロギングによって提供されます。org.slf4j.LoggerFactory.getLogger() メソッドを呼び出すバンドルを検索し、バンドルをロガーインスタンスに関連付けます。カスタム org.sfl4j.Logger インスタンスを指定しない場合、Log コンポーネントによって作成されたロガーは camel-core バンドルに関連付けられます。
シナリオによっては、ロガーに関連付けられたバンドルがルート定義が含まれるバンドルである必要があります。これを実行するには、レジストリーに org.slf4j.Logger の単一インスタンスを登録するか、または logger URI パラメーターを使用して参照します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat