如何让 NLog 与 .NET 控制台日志记录正确集成并被 IDE 识别?
How do I get NLog to integrate correctly with .NET console logging and recognized by the IDE?
我有一个使用 .NET Core 2 的 ASP.NET 项目,我注意到当我使用 ASP.NET 提供的默认记录器(作为 ILogger 注入到任何控制器中)时,我看到格式化的日志消息如下:
注意日志级别 "info" 是如何着色的。显然,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 控制台日志,因为默认记录器仍然处于活动状态。这是因为默认记录器仅适用于使用依赖注入的控制器,我没有看到在我的所有 class 中使用它的简单方法,而 NLog 很容易添加到任何 class 通过做:
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
所以,我有两个选择:
- 使 IDE 识别的 nlog 控制台消息类似于它识别默认记录器消息的方式。
- 使默认的 Microsoft 记录器可供任何 class 使用,而无需复杂的依赖项注入,并确保它仍然将所有消息路由到 NLog 记录器(因为我仍然需要 nlog 的文件记录规则,包括压缩、归档和其他 nlog 功能)
您的 NLog.Config 文件中的布局是什么样的?
您可以尝试这样的操作来获得您想要的布局。
Layout="${level:uppercase=false}: ${logger}${newline}${message}"
NLog 有一个 ColoredConsole 目标,如果布局在 ASP.Net 记录器中没有这样做,它可能会为您提供您正在寻找的颜色。
我有一个使用 .NET Core 2 的 ASP.NET 项目,我注意到当我使用 ASP.NET 提供的默认记录器(作为 ILogger 注入到任何控制器中)时,我看到格式化的日志消息如下:
注意日志级别 "info" 是如何着色的。显然,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 控制台日志,因为默认记录器仍然处于活动状态。这是因为默认记录器仅适用于使用依赖注入的控制器,我没有看到在我的所有 class 中使用它的简单方法,而 NLog 很容易添加到任何 class 通过做:
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
所以,我有两个选择:
- 使 IDE 识别的 nlog 控制台消息类似于它识别默认记录器消息的方式。
- 使默认的 Microsoft 记录器可供任何 class 使用,而无需复杂的依赖项注入,并确保它仍然将所有消息路由到 NLog 记录器(因为我仍然需要 nlog 的文件记录规则,包括压缩、归档和其他 nlog 功能)
您的 NLog.Config 文件中的布局是什么样的?
您可以尝试这样的操作来获得您想要的布局。
Layout="${level:uppercase=false}: ${logger}${newline}${message}"
NLog 有一个 ColoredConsole 目标,如果布局在 ASP.Net 记录器中没有这样做,它可能会为您提供您正在寻找的颜色。