だから我々は、新しい世界にいる、事前に最後の答えに
感謝をチェック私たちは反応的かつ非阻止的であるが、その前にいくつかの情報が必要な世界です。
Akkaは一般的なロギングライブラリ(log4j、logback)のファサードであるSLF4j apiをロギングに使用していますが、アクターをブロックしないためにはこの非同期をすべて行います。
ので:ログは次のように定義された俳優で
log.info("Received msg: {} use thread {} to dispatch", message, Thread.currentThread().getName());
:
LoggingAdapter log = Logging.getLogger(getContext().system(), this);
ロギングアクターにログメッセージを送信し、IO操作は、実際にこの専門の俳優によって行われます。
Log4jまたはLogbackは、実際のロギングの実装のみです。そのため、プロジェクト内にifのいずれかを設定する必要があります。このhttp://doc.akka.io/docs/akka/current/java/logging.htmlの詳細 -
log4j.appender.file.layout.ConversionPattern=[%d,%p] [%X{sourceThread}] [%c{1}.%M:%L] %m%n
%のX {sourceThread}は実際にあなたのログメッセージは、元のアクターとしない(%tで記録さ)ロギング・アクターの内部IOオペレーションを実行するスレッドによって発行された実行スレッドを与えます
私のアドバイスは、非同期操作を使用しているので、log4jの2を使用することで、ログ俳優の後ろにスレッドをブロックすることはありません - より多くのログの使用上の情報についてhttps://www.grobmeier.de/log4j-2-performance-close-to-insane-20072013.html
おかげでlog4jの2パフォーマンスについて。私の質問は、私たちはロギングを実装するSLF4j APIを持っていましたが、なぜakkaロギングを使用し、SLF4jの組み込みメソッドをロギングに使用しないのでしょうか? –
私が説明したように、IO操作でアクターをブロックしないようにするために、アクターとスループットのパフォーマンスを向上させるためにアクター内でakkaロギングを使用することが望ましい理由から、実際のロギングはSLF4jによって出荷されます。 –
驚くばかり!それを得ました。ありがとう –