Dot-Net

讓 NLog 寫入控制台

  • April 20, 2021

我對 NLog 很陌生。我有一個使用 NLog 的 .NET 框架控制台應用程序。我希望配置NLog直接將日誌寫入控制台。我安裝了 NLog 和 NLog.Config NuGet 包,在 nlog.config 中有以下內容:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
     autoReload="true"
     throwExceptions="false"
     internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
 <targets>
   <target xsi:type="Console"
           name="String"
           layout="Layout"
           footer="Layout"
           header="Layout"
           encoding="Encoding"
   />
 </targets>
</nlog>

然後在 C# 中,以下兩行不會列印到控制台:

var logger = LogManager.GetCurrentClassLogger();
logger.Info("hello");

上網查了一下,到現在什麼都沒找到。

在這裡查看官方教程

您需要添加輸出規則:

<rules>
   <logger name="*" minlevel="Info" writeTo="console" />
</rules>

還要簡化您的控制台目標:

<target name="console" xsi:type="Console" />

這裡有很多有用的範例:最有用的 NLog 配置

您也可以從程式碼中進行配置:

var config = new NLog.Config.LoggingConfiguration();

// Targets where to log to: Console
var logconsole = new NLog.Targets.ConsoleTarget("logconsole");

// Rules for mapping loggers to targets
config.AddRule(LogLevel.Info, LogLevel.Fatal, logconsole);

// Apply config
NLog.LogManager.Configuration = config;

採用:

var logger = NLog.LogManager.GetCurrentClassLogger();
logger.Info("hello");

引用自:https://stackoverflow.com/questions/50883109