11.5.7. Socket ログハンドラーの設定

ここでは、管理 CLI を使用して Socket ログハンドラーを設定する方法を説明します。ソケットは TCP または UDP ソケットになります。管理コンソールでは、ConfigurationSubsystemsLoggingConfiguration と選択し、表示 をクリックして HandlerSize 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 サブシステムが初期化されるまでキューに置かれます。ログレベルが TRACEDEBUG などの低レベルに設定されている場合、起動時に大量のメモリーが消費されることがあります。

  • エンコーディングを設定します。

    ハンドラーのエンコーディングを設定します (例: 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 EAP『How to Configure Server Security』の「Elytron Subsystem」を参照してください。

  1. Elytron を設定します。

    1. キーストアを追加します。

      /subsystem=elytron/key-store=log-server-ks:add(path=/path/to/keystore.jks, type=JKS, credential-reference={clear-text=mypassword})
    2. トラストマネージャーを追加します。

      /subsystem=elytron/trust-manager=log-server-tm:add(key-store=log-server-ks)
    3. クライアント SSL コンテキストを追加します。

      /subsystem=elytron/client-ssl-context=log-server-context:add(trust-manager=log-server-tm, protocols=["TLSv1.2"])
  2. ソケットバインディングを追加します。

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=log-server:add(host=localhost, port=4560)
  3. JSON フォーマッターを追加します。

    /subsystem=logging/json-formatter=json:add
  4. 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)
  5. ログハンドラーをルートロガーに割り当てます。

    /subsystem=logging/root-logger=ROOT:add-handler(name=log-server-handler)