我正在将Serilog集成到我创建的现有多级层和多装配解决方案中.我之前使用的日志记录技术只是通过事件向字符串传递字符串.我想摆脱这个.
我已经读过,我可以使用app.config文件将记录器配置加载到我的库中的每个类中,但是如何在多组件项目中执行此操作.
我有一个顶级/启动项目和两个类库项目.我想在整个程序中使用带有两个接收器的相同记录器.
这些是我到目前为止发现的文章
https://github.com/serilog/serilog/wiki/AppSettings
http://nblumhardt.com/2014/04/xml-configuration-for-serilog/
有人可以解释如何实现这一目标吗?
Serilog允许您按程序使用记录器配置; 虽然可以逐类调整日志记录,但这通常是在事后进行过滤等等.
建议的方法是:
将Serilog设置为Program.Main()应用入口点的首要位置:
Log.Logger = new LoggerConfiguration()
.WriteTo.Sink1()
.WriteTo.Sink2()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
请注意,这会设置静态Log类.在你的应用程序的其他地方你现在可以写:
Log.Information("This is a message");
Run Code Online (Sandbox Code Playgroud)
并将消息传递给两个接收器.你可以避免使用静态Log而不是传递ILogger,但除非你在这里有强烈的偏好,否则静态选项不那么麻烦.
XML/appSettings配置不会改变任何这一点.它只是将一些细节移动到配置文件,因此将第一个代码块更改为:
Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
并添加:
<add key="serilog:write-to:Sink1" />
<add key="serilog:write-to:Sink2" />
Run Code Online (Sandbox Code Playgroud)
以App.config将具有相同的效果.如果可以避免使用XML,则代码中的配置通常不那么麻烦(移动部件更少).
| 归档时间: |
|
| 查看次数: |
3372 次 |
| 最近记录: |