我有一个使用.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控制台日志,因为默认记录器仍然是活动的。这是因为默认记录器仅对使用依赖注入的控制器可用,我没有看到在我的所有类中使用它的简单方法,而NLog很容易通过这样做添加到任何类:
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
所以,我有两个选择:
答案 0 :(得分:0)
您的NLog.Config文件中的布局是什么样的?
你可以试试这样的东西来获得你想要的布局。
Layout="${level:uppercase=false}: ${logger}${newline}${message}"
NLog有一个ColoredConsole目标,如果布局没有在ASP.Net Logger中执行,它可能会为您提供所需的颜色。