2016-02-27 101 views
6

我将Serilog集成到我创建的现有多类图层和多装配解决方案中。我以前使用的日志记录技术只是简单地将事件传递给图层。我想摆脱这一点。一个用于多项目解决方案的记录器

我读过我可以使用app.config文件将记录器配置加载到我的库中的每个类中,但是如何在多装配项目中执行此操作。

我有一个顶级/启动项目和两个类库项目。我想为整个程序使用与两个接收器相同的记录器。

这是我发现的文章至今

https://github.com/serilog/serilog/wiki/AppSettings

http://nblumhardt.com/2014/04/xml-configuration-for-serilog/

有人能解释如何做到这一点?

回答

5

Serilog允许您为每个程序使用记录器配置;尽管可以逐级调整日志记录,但这通常是在过滤之后进行的。

推荐的方法是:

设置Serilog的第一件事就是Program.Main()或任何你的应用程序的入口点是:

Log.Logger = new LoggerConfiguration() 
    .WriteTo.Sink1() 
    .WriteTo.Sink2() 
    .CreateLogger(); 

声明本设置静态Log类。在您的应用程序的其他地方,您现在可以编写:

Log.Information("This is a message"); 

并且该消息将传递给两个接收器。您可以避开静态Log,而是通过​​左右,但除非您在此处有强烈的偏好,否则静态选项不那么麻烦。

XML/appSettings配置不会更改任何此项。它只是将一些细节的配置文件,所以改变一个代码块到:

Log.Logger = new LoggerConfiguration() 
    .ReadFrom.AppSettings() 
    .CreateLogger(); 

并添加:

<add key="serilog:write-to:Sink1" /> 
<add key="serilog:write-to:Sink2" /> 

App.config将有同样的效果。如果您可以避免使用XML,则代码中的配置通常不那么麻烦(移动部分更少)。

相关问题