让nlog写入控制台

che*_*cai 1 .net nlog nlog-configuration

我对nlog很陌生。我有一个使用nlog的.NET Framework控制台应用程序。我希望将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>
Run Code Online (Sandbox Code Playgroud)

然后在C#中,以下两行将不会打印到控制台。

var logger = LogManager.GetCurrentClassLogger();
logger.Info("hello");
Run Code Online (Sandbox Code Playgroud)

在网上看过,但至今没有找到任何东西。

Mar*_*mro 11

您也可以通过代码进行配置:

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;
Run Code Online (Sandbox Code Playgroud)

使用:

var logger = NLog.LogManager.GetCurrentClassLogger();
logger.Info("hello");
Run Code Online (Sandbox Code Playgroud)


Ale*_*hev 6

寻找官方教程:链接

您需要添加输出规则:

<rules>
    <logger name="*" minlevel="Info" writeTo="console" />
</rules>
Run Code Online (Sandbox Code Playgroud)

同时简化控制台目标:

<target name="console" xsi:type="Console" />
Run Code Online (Sandbox Code Playgroud)

这里有许多有用的示例:最有用的NLog配置