11.5.7. Socket ログハンドラーの設定
ここでは、管理 CLI を使用して Socket ログハンドラーを設定する方法を説明します。ソケットは TCP または UDP ソケットになります。管理コンソールでは、Configuration → Subsystems → Logging → Configuration と選択し、表示 をクリックして Handler → Size Handler と選択すると、Size ログハンドラーの設定も可能になります。
サーバーが管理者専用モードで起動された場合、ログメッセージは破棄されます。
Socket ログハンドラーを設定するために実行する主なタスクは以下のとおりです。
ロギングプロファイルにこのログハンドラーを設定する場合、コマンドの最初は /subsystem=logging/
ではなく /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/
になります。
さらに、管理対象ドメインで実行している場合はコマンドの前に /profile=PROFILE_NAME
を付けます。
ソケットバインディングの追加
remote-destination-outbound-socket-binding
または local-destination-outbound-socket-binding
を使用する ソケットバインディング として定義します。
/socket-binding-group=SOCKET_BINDING_GROUP/remote-destination-outbound-socket-binding=SOCKET_BINDING_NAME:add(host=HOST, port=PORT)
ログフォーマッターの設定
JSON フォーマッターなど、使用する ログフォーマッター を定義します。
/subsystem=logging/json-formatter=FORMATTER:add
Socket ログハンドラーの追加
Socket ログハンドラーを追加する場合、使用するソケットバインディングとフォーマッターを指定する必要があります。
/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:add(outbound-socket-binding-ref=SOCKET_BINDING_NAME,named-formatter=FORMATTER)
Socket ログハンドラーの設定
必要性に応じて、以下の Socket ログハンドラー属性を 1 つ以上設定する必要がある場合があります。利用できる Socket ログハンドラー属性の完全リストと説明は、Socket ログハンドラーの属性 を参照してください。
プロトコルを設定します。
使用するプロトコルを設定します。デフォルトは
TCP
です。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=protocol,value=PROTOCOL)
ログレベルを設定します。
ハンドラーの適切なログレベルを設定します。デフォルトは
ALL
です。利用できるオプションは、ログレベル を参照してください。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
注記サーバーの起動中、Socket ログハンドラーによって処理されるログメッセージは、ソケットバインディングが設定され、
logging
サブシステムが初期化されるまでキューに置かれます。ログレベルがTRACE
やDEBUG
などの低レベルに設定されている場合、起動時に大量のメモリーが消費されることがあります。エンコーディングを設定します。
ハンドラーのエンコーディングを設定します (例:
utf-8
)。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=encoding,value=ENCODING)
自動フラッシュを設定します。
毎回書き込みの後に自動的にフラッシュするかどうかを設定します。デフォルト値は
true
です。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=autoflush,value=AUTO_FLUSH)
フィルター式を設定します。
ハンドラーのログメッセージをフィルターするために式を設定します。必ずコンマと引用符はエスケープ処理し、引用符で囲むようにしてください。たとえば、以下の置換可能な
FILTER_EXPRESSION
変数では、not(match("WFLY"))
のフィルター式を"not(match(\"WFLY\"))"
に置き換える必要があります。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
利用可能なフィルター式の詳細は フィルター式 の項を参照してください。
Socket ログハンドラーのロガーへの割り当て
ログハンドラーをアクティブにするには、ロガーに割り当てる必要があります。
以下の管理 CLI コマンドは Socket ログハンドラーをルートロガーに割り当てます。
/subsystem=logging/root-logger=ROOT:add-handler(name=SOCKET_HANDLER_NAME)
以下の管理 CLI コマンドは、名前が CATEGORY
によって指定されるロガーに Socket ログハンドラーを割り当てます。
/subsystem=logging/logger=CATEGORY:add-handler(name=SOCKET_HANDLER_NAME)
Socket ログハンドラーの削除
ログハンドラーは remove
操作で削除できます。ログハンドラーが現在ロガーまたは Async ログハンドラーに割り当てられている場合は削除できません。
/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:remove
SSL/TLS を使用したソケット上でのログメッセージの送信
次の手順は、SSL_TCP
プロトコルを使用してソケット上でログメッセージを送信するように Socket ログハンドラーを設定する方法の例を示しています。この例では、Socket ログハンドラーによって使用される elytron
サブシステムのキーストア、トラストマネージャー、およびクライアント SSL コンテキストを設定します。ルートロガーからのログメッセージは指定のソケット上で送信され、JSON フォーマッターによってフォーマットされます。
Elytron コンポーネントの設定に関する詳細は、JBoss EAPHow to Configure Server Securityの Elytron Subsystem を参照してください。
Elytron を設定します。
キーストアを追加します。
/subsystem=elytron/key-store=log-server-ks:add(path=/path/to/keystore.jks, type=JKS, credential-reference={clear-text=mypassword})
トラストマネージャーを追加します。
/subsystem=elytron/trust-manager=log-server-tm:add(key-store=log-server-ks)
クライアント SSL コンテキストを追加します。
/subsystem=elytron/client-ssl-context=log-server-context:add(trust-manager=log-server-tm, protocols=["TLSv1.2"])
ソケットバインディングを追加します。
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=log-server:add(host=localhost, port=4560)
JSON フォーマッターを追加します。
/subsystem=logging/json-formatter=json:add
Socket ログハンドラーを追加します。
/subsystem=logging/socket-handler=log-server-handler:add(named-formatter=json, level=INFO, outbound-socket-binding-ref=log-server, protocol=SSL_TCP, ssl-context=log-server-context)
ログハンドラーをルートロガーに割り当てます。
/subsystem=logging/root-logger=ROOT:add-handler(name=log-server-handler)