首页 > 解决方案 > NLog.Targets.DebugTarget 类是如何工作的?

问题描述

以下初始化在调用时产生以下输出而不是实际错误,而不是实际错误ClassLogger.Error("Error message.");

    public static readonly NLog.Logger ClassLogger = NLog.LogManager.GetCurrentClassLogger();
    public static void InitializeLogger(string logfileName)
    {
        NLog.Common.InternalLogger.LogLevel = NLog.LogLevel.Debug;
        NLog.Common.InternalLogger.LogToConsole = true;
        NLog.Common.InternalLogger.LogFile = logfileName; 

        DebugTarget target = new DebugTarget();
        target.Layout = "${message}";
        NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, NLog.LogLevel.Error);
    }

    //...
    ClassLogger.Error("Error message."); //output:
    //...

    2021-10-13 17:30:40.8757 Debug Targets for ConsoleApplication.Program by level:
    2021-10-13 17:30:40.8757 Debug Trace =>
    2021-10-13 17:30:40.8757 Debug Debug =>
    2021-10-13 17:30:40.8757 Debug Info =>
    2021-10-13 17:30:40.8757 Debug Warn =>
    2021-10-13 17:30:40.8757 Debug Error =>
    2021-10-13 17:30:40.8757 Debug Fatal =>

虽然以下初始化会产生实际的错误消息。

public static void InitializeLogger(string logfileName)
{
    var config = new NLog.Config.LoggingConfiguration();
    var logfile = new NLog.Targets.FileTarget("logfile") { FileName = logfileName };
    var logconsole = new NLog.Targets.ConsoleTarget("logconsole");
    
    config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Fatal, logconsole);
    config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Fatal, logfile);
    NLog.LogManager.Configuration = config;
}

//...
ClassLogger.Error("Error message."); //output:
//...

2021-10-13 17:39:34.0430|ERROR|ConsoleApplication.Program|Error message.

那么当从 C# 代码中使用 Nlog.Logger 初始化时,DebugTarget 类的目的是什么?它应该在哪里使用呢?

标签: c#debugginglogging.net-corenlog

解决方案


推荐阅读