如何使NLog与.NET控制台日志记录正确集成并由IDE识别?

时间:2017-12-30 19:25:32

标签: asp.net logging .net-core nlog rider

我有一个使用.NET Core 2的ASP.NET项目,我注意到当我使用ASP.NET提供的默认记录器(作为ILogger注入任何控制器)时,我看到日志消息的格式如下:

default logger

注意日志级别" 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日志记录规则处理日志记录。所以,例如,如果我有一个规则要打印到控制台,那么我看到以下内容:

nlog console log

(请注意,默认的Microsoft记录器仍处于活动状态!并且仍会像第一张图片一样再次打印相同的消息)

现在,我真正的问题是,有没有办法让所有nlog控制台日志消息的显示方式与来自默认记录器的消息一样?

您可能想知道为什么我需要nlog控制台日志,因为默认记录器仍然是活动的。这是因为默认记录器仅对使用依赖注入的控制器可用,我没有看到在我的所有类中使用它的简单方法,而NLog很容易通过这样做添加到任何类:

    private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

所以,我有两个选择:

  • 使IDE识别的nlog控制台消息类似于识别默认记录器消息的方式。
  • 使默认的Microsoft记录器可用于任何类而无需复杂的依赖注入,并确保它仍然将所有消息路由到NLog记录器(因为我仍然需要nlog&#file文件记录规则,包括压缩,存档和其他nlog功能)

1 个答案:

答案 0 :(得分:0)

您的NLog.Config文件中的布局是什么样的?

你可以试试这样的东西来获得你想要的布局。

Layout="${level:uppercase=false}: ${logger}${newline}${message}"

NLog有一个ColoredConsole目标,如果布局没有在ASP.Net Logger中执行,它可能会为您提供所需的颜色。