2016-08-28 6 views

答えて

1

私はこれを行う方法を研究していくつかの時間を費やしてきた、と詳細なblog postを書きましたそれについて。 DebugInfoWarningError、およびInitializeLogger:一言で言えば

は、あなたが5つのメッセージを処理する必要があります。

public class MyLogger : ReceiveActor 
{ 
    public MyLogger() 
    { 
     Receive<Debug>(e => this.Log(LogLevel.DebugLevel, e.ToString())); 
     Receive<Info>(e => this.Log(LogLevel.InfoLevel, e.ToString())); 
     Receive<Warning>(e => this.Log(LogLevel.WarningLevel, e.ToString())); 
     Receive<Error>(e => this.Log(LogLevel.ErrorLevel, e.ToString())); 
     Receive<InitializeLogger>(_ => Sender.Tell(new LoggerInitialized())); 
    } 

    // ... 
} 

最初の4つのメッセージは、これまでにログを使用したことがある場合は自明です。

Log()は、あなたが定義したヘルパー関数で、メッセージを宛先に記録する詳細を処理します。

InitializeLoggerは起動時に行われます。ロガーがセットアップされ、メッセージの受信を開始する準備が整ったことを内部イベントバスに通知する必要があります。 LoggerInitializedメッセージで返信する必要があります。

理想的には、適切なライフサイクルフック(PreStart()およびPostStop())を使用して、外部リソースの割り当てとクリーンアップも行う必要があります。ロギングアダプタは現在のところまだこれを行っていません。

2

OnReceive(オブジェクトメッセージ)をオーバーライドする通常のアクタが必要なようです。ここで

https://github.com/akkadotnet/akka.net/blob/4acfa7c363bfa83ac71849a5a8487c8d6b1bbcb1/src/core/Akka/Event/DefaultLogger.cs

トレース・ロガー実装されています:ここではデフォルトのロガーの実装がある

https://github.com/akkadotnet/akka.net/blob/92177da15a7ef54e23b5224c05997592cbceb8e4/src/core/Akka/Event/TraceLogger.cs

関連する問題