如何创建自定义Akka .NET记录器?

时间:2016-08-28 15:47:22

标签: logging akka.net

Akka .NET文档仅解释了如何configure custom loggers。你是如何开始开发自定义记录器的?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

我花了一些时间研究如何做到这一点,并写了详细的blog post

简而言之,您需要处理五条消息:DebugInfoWarningErrorInitializeLogger

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()));
    }

    // ...
}

如果您之前曾使用过日志记录,前四条消息是不言自明的。

Log()只是您定义的辅助函数,它处理将消息记录到目标的详细信息。

InitializeLogger在启动时完成。需要通知内部事件总线已设置记录器并准备开始接收消息。您必须回复LoggerInitialized条消息。

理想情况下,您还应该使用适当的生命周期挂钩(PreStart()PostStop())来处理外部资源的分配和清理。在那里记录适配器目前还没有。