Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule Runtime Engine (Mule) 4 は、Log4j 2 非同期ログをデフォルトで使用するため、メッセージ処理とは別のスレッドでログ操作が実行され、ログ操作が完了するのを待たずにメッセージ処理を続行できます。
非同期ログでは、 「Asynchronous Logging in Mule 3.6 (Mule 3.6 の非同期ログ)」で説明されているようにパフォーマンスと信頼性のトレードオフが発生し、ログバッファがディスクにフラッシュされる前に Mule がクラッシュした場合は一部のメッセージが失われることがあります。この場合は、非同期ロガーと同期ロガーの混在構成を検討してください。
ベストプラクティスは、本番アプリケーションでは WARN
のログレベルを最小限に抑えて、同期ログに非同期ログを優先させて使用することです。ポリシーのインストール成功などのイベントを確認する場合や、トラブルシューティングを実施する場合などには、INFO
ログレベルを有効化します。
ログ戦略を設定するには、アプリケーションの src/main/resources/log4j2.xml
ファイルを次の例のように編集します。
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<Appenders>
<RollingFile name="file" fileName="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}try-transactional-propagate.log"
filePattern="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}try-transactional-propagate-%i.log">
<PatternLayout pattern="%-5p %d [%t] [event: %X{correlationId}] %c: %m%n" />
<SizeBasedTriggeringPolicy size="10 MB" />
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<!-- Http Logger shows wire traffic on DEBUG. -->
<!--AsyncLogger name="org.mule.service.http.impl.service.HttpMessageLogger" level="DEBUG" /-->
<AsyncLogger name="org.mule.service.http" level="WARN"/>
<AsyncLogger name="org.mule.extension.http" level="WARN"/>
<!-- Mule logger -->
<AsyncLogger name="org.mule.runtime.core.internal.processor.LoggerMessageProcessor" level="WARN"/>
<AsyncRoot level="WARN">
<AppenderRef ref="file" />
</AsyncRoot>
</Loggers>
</Configuration>
メッセージ、特にペイロードの一部をログに記録する場合は、ストリーミングがバイパスされ、大きなペイロードでは大量のディスク I/O が発生するため、注意が必要です。
<async>
スコープを使用したメッセージのログは避けてください。
ログメカニズムはすでに Log4j2 ライブラリによってバックエンドで非同期に実装されているため、<async>
スコープにロガーを含めても並列処理は改善せず、リソースの使用量が増えて、必要なスレッド数が重複するだけです。アプリケーションでこのパターンを使用すると、スレッドの枯渇、パフォーマンスの低下、バックプレッシャーの原因となることがあります。
<async doc:name="Async" doc:description="Don't do this">
<logger level="INFO" doc:name="Logger" message="Don't do this" />
</async>
<logger level="INFO" doc:name="Logger" message="Do this"/>