【发布时间】:2018-06-10 18:05:24
【问题描述】:
我有一个使用 .NET Core 2 的 ASP.NET 项目,我注意到当我使用 ASP.NET 提供的默认记录器(作为 ILogger 注入任何控制器)时,我看到格式如下的日志消息:
注意日志级别“信息”是如何着色的。显然,IDE 正在识别这是一条记录器消息并以某种特殊方式处理它。
但是,如果我改用 NLog,则这样做:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseNLog() // add this line!
.Build();
在 Program.cs 中,无需任何进一步的代码更改
这会将所有日志消息路由到 nlog 处理器,该处理器将根据 nlog.config 文件中的 nlog 日志记录规则处理日志记录。因此,例如,如果我有一条规则要打印到控制台,那么我会看到以下内容:
(请注意,默认的 Microsoft 记录器仍然处于活动状态!并且仍然会像第一张图片一样再次打印相同的消息)
现在,我真正的问题是,有没有办法让所有 nlog 控制台日志消息的显示方式与来自默认记录器的消息相同?
您可能想知道为什么我需要 nlog 控制台日志,因为无论如何默认记录器仍然处于活动状态。这是因为默认记录器仅适用于使用依赖注入的控制器,我没有看到在所有类中使用它的简单方法,而 NLog 很容易通过以下方式添加到任何类中:
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
所以,我有两个选择:
- 使 IDE 识别的 nlog 控制台消息与识别默认记录器消息的方式类似。
- 使默认的 Microsoft 记录器可用于任何类,而无需复杂的依赖注入,并确保它仍将所有消息路由到 NLog 记录器(因为我仍然需要具有压缩、归档和其他 nlog 功能的 nlog 文件记录规则)李>
【问题讨论】:
-
您应该能够使用依赖注入在任何类中注入 ILogger
。就像您在控制器中所做的那样。 NLog 可能很有用,但你给出的理由并不是一个真正有效的理由。
标签: asp.net logging .net-core nlog rider