Log4j を使用したログシステムとのインテグレーション

CloudHub のログを無効化して、Log4j 設定を使用して CloudHub アプリケーションをログシステムに統合できます。 ユーザーのログシステムと CloudHub の両方にログが送信されるように設定したら、デフォルトの CloudHub アプリケーションログを無効化してください。

要件と制限事項

  • この機能は要求に応じてのみ使用できます。

    Runtime Manager に ​[Disable CloudHub logs (CloudHub ログを無効化)]​ オプションが表示されていない場合は、 ヘルプセンター​で要求できます。

  • MuleSoft のサポートは、カスタムログ設定の実装や、カスタムログ設定に起因する問題の解決については、助言を行いません。

  • MuleSoft では、以下のような Log4j アペンダーの設定ミスによる問題については責任を負いません。

    • ログデータの消失

    • パフォーマンスの低下

    • ディスクスペースの不足

  • 同期ログアペンダーは使用しないでください。

    非同期ログアペンダーのみを使用してください。

  • CloudHub ログを無効化すると:

    • Runtime Manager ではシステムログのみを使用できます。

      システムログでは、ワーカーのデプロイ状況と、アプリケーションが適切に起動したかどうかが示されますが、アプリケーションログは提供されません。 アプリケーションワーカーのログについては、アプリケーションのログシステムを確認してください。

    • [Applications (アプリケーション)] > [Logs (ログ)]​ ページではアプリケーションワーカーのログをダウンロードできません。

    • CloudHub は、ログが使用できないことを示す警告を表示します。

  • システムログ (​mule_ee.log​) はアプリケーションログと同じ方法で外部ログソリューションに転送することはできません。

Log4j 設定の作成

独自のログシステムにログを送信すると共に CloudHub でもログを表示できるようにするには、CloudHub Log4j アペンダーを設定する必要があります。

任意の Log4j アペンダーを使用できます。​log4j2.xml​ の設定については、 「Log4j の設定構文」​を参照してください。

Log4j アペンダーを有効化するには、​log4j2.xml​ 設定ファイルを自分のロガー設定で更新し、Log4j アペンダー ​Log4J2CloudhubLogAppender​ および ​RollingFile​ を含めます。 Anypoint Studio では、​log4j2.xml​ ファイルは ​src/main/resources​ ディレクトリにあります。

log4j2.xml​ ファイルの Log4j アペンダーの 2 つの例を示します。

Log4J2CloudhubLogAppender

ログデータを CloudHub に送信します。

RollingFile

ログデータを VM のファイルシステムに送信します。

MuleSoft サポートチームがログを表示できるようにするには、​log4j2.xml​ ファイルのカスタム設定にアペンダーを含める必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" name="cloudhub" packages="com.mulesoft.ch.logging.appender">
    <Appenders>
        <RollingFile name="FILE"
                     fileName="/opt/mule/mule-CURRENT/logs/mule-${sys:domain}.log"
                     filePattern="/opt/mule/mule-CURRENT/logs/mule-${sys:domain}-%i.log">

            <PatternLayout pattern="[%d{MM-dd HH:mm:ss.SSS}] %-5p %c{1} [%t]: %m%n"/>
            <DefaultRolloverStrategy max="10"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
        </RollingFile>
        <Log4J2CloudhubLogAppender name="CLOUDHUB"
                addressProvider="com.mulesoft.ch.logging.DefaultAggregatorAddressProvider"
                applicationContext="com.mulesoft.ch.logging.DefaultApplicationContext"
                appendRetryIntervalMs="${sys:logging.appendRetryInterval}"
                appendMaxAttempts="${sys:logging.appendMaxAttempts}"
                batchSendIntervalMs="${sys:logging.batchSendInterval}"
                batchMaxRecords="${sys:logging.batchMaxRecords}"
                memBufferMaxSize="${sys:logging.memBufferMaxSize}"
                journalMaxWriteBatchSize="${sys:logging.journalMaxBatchSize}"
                journalMaxFileSize="${sys:logging.journalMaxFileSize}"
                clientMaxPacketSize="${sys:logging.clientMaxPacketSize}"
                clientConnectTimeoutMs="${sys:logging.clientConnectTimeout}"
                clientSocketTimeoutMs="${sys:logging.clientSocketTimeout}"
                serverAddressPollIntervalMs="${sys:logging.serverAddressPollInterval}"
                serverHeartbeatSendIntervalMs="${sys:logging.serverHeartbeatSendIntervalMs}"
                statisticsPrintIntervalMs="${sys:logging.statisticsPrintIntervalMs}">

            <PatternLayout pattern="[%d{MM-dd HH:mm:ss}] %-5p %c{1} [%t]: %m%n"/>
        </Log4J2CloudhubLogAppender>
    </Appenders>
    <Loggers>
        <AsyncRoot level="INFO">
            <AppenderRef ref="FILE"/>
            <AppenderRef ref="CLOUDHUB"/>
        </AsyncRoot>
        <AsyncLogger name="com.gigaspaces" level="ERROR"/>
        <AsyncLogger name="com.j_spaces" level="ERROR"/>
        <AsyncLogger name="com.sun.jini" level="ERROR"/>
        <AsyncLogger name="net.jini" level="ERROR"/>
        <AsyncLogger name="org.apache" level="WARN"/>
        <AsyncLogger name="org.apache.cxf" level="WARN"/>
        <AsyncLogger name="org.springframework.beans.factory" level="WARN"/>
        <AsyncLogger name="org.mule" level="INFO"/>
        <AsyncLogger name="com.mulesoft" level="INFO"/>
        <AsyncLogger name="org.jetel" level="WARN"/>
        <AsyncLogger name="Tracking" level="WARN"/>
    </Loggers>
</Configuration>
log4j2.xml​ カスタム設定で スクリプト​を使用する必要がある場合は、​log4j2.Script.enableLanguages​ システムプロパティを適宜設定して、使用する言語を有効化してください。値のカンマ区切りリストを指定することで、複数の言語を有効化できます。例: log4j2.Script.enableLanguages=js,groovy​。

CloudHub でのカスタム Log4j 設定の有効化

Log4j アペンダーを設定したら、アプリケーションを CloudHub にデプロイしてから、以下の手順に従って CloudHub ログを無効化します。

  1. Anypoint Platform の ​[Runtime Manager]​ を選択します。

  2. 左側のメニューで ​[Applications (アプリケーション)]​ をクリックします。

  3. [Type (種別)]​ 列をクリックしてアプリケーションの詳細ペインを表示します。

  4. [Manage Application (アプリケーションを管理)]​ をクリックします。

  5. [Settings (設定)]​ ページで、​[Disable CloudHub logs (CloudHub ログを無効化)]​ をクリックします。

    「Applications Settings (アプリケーションの設定)」 ページの 「Disable CloudHub logs (CloudHub ログを無効化)」 オプション
    Figure 1. [Settings (設定)]​ ページの ​[Disable CloudHub logs (CloudHub ログを無効化)]​ オプションを示す矢印。
  6. [Disable CloudHub logs (CloudHub ログを無効化)]​ 確認ウィンドウで、CloudHub ログの無効化を確認するためのチェックボックスをオンにします。

    「Disable CloudHub logs (CloudHub ログを無効化)」 確認ウィンドウ
    Figure 2. [Disable CloudHub logs (CloudHub ログを無効化)]​ 確認ウィンドウが表示された画面。
  7. [Apply Changes (変更を適用)]​ をクリックします。

  8. アプリケーション設定を参照して、設定が正しいことを確認します。

  9. [Apply Changes (変更を適用)]​ をクリックして、アプリケーションを再起動します。

アプリケーションが起動すると、カスタム Log4j アペンダーへのログの送信が開始され、対象ログシステムでログを参照できるようになります。