出于一些奇怪的原因,当我写入控制台时,nlog没有显示任何内容,在Program.cs的Main()方法中我分配了nlog.config:
LogManager.Configuration = new XmlLoggingConfiguration("assets/packages/nlog/nlog.config");
这是Config:
<nlog throwExceptions="true">
<targets>
<target name="file" type="File" fileName="${basedir}/assets/logging/log.txt" />
</targets>
<rules>
<logger name="*" minLevel="Info" writeTo="File" />
</rules>
</nlog>
以下是一个示例类:
private static readonly ILogger Logger = LogManager.GetCurrentClassLogger();
public MyClass()
{
Console.Write("lol");
Logger.Debug("Debug test...");
Logger.Error("Debug test...");
Logger.Fatal("Debug test...");
Logger.Info("Debug test...");
Logger.Trace("Debug test...");
Logger.Warn("Debug test...");
}
我知道正在调用该方法,因为我得到&#34; lol&#34;,而不是控制台上的实际日志,但是它会写入/assets/logging/log.txt文件。
答案 0 :(得分:5)
要在控制台上查看日志输出,您必须为此添加目标和规则:
<?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">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="console" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="logfile" />
<logger name="*" minlevel="Info" writeTo="console" />
</rules>
</nlog>
通过创建一个简单的Logger类,您的示例适用于我(使用上面的配置文件)
class MyLoggerClass
{
public static Logger Logger = LogManager.GetCurrentClassLogger();
}
class MyClass
{
static void Main(string[] args)
{
Console.Write("lol");
MyLoggerClass.Logger.Debug("Debug test...");
MyLoggerClass.Logger.Error("Debug test...");
MyLoggerClass.Logger.Fatal("Debug test...");
MyLoggerClass.Logger.Info("Debug test...");
MyLoggerClass.Logger.Trace("Debug test...");
MyLoggerClass.Logger.Warn("Debug test...");
}
}
或者您可以直接在课堂上使用Logger:
class MyClass
{
private static Logger Logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
Console.Write("lol");
Logger.Debug("Debug test...");
Logger.Error("Debug test...");
Logger.Fatal("Debug test...");
Logger.Info("Debug test...");
Logger.Trace("Debug test...");
Logger.Warn("Debug test...");
}
}
log.txt的输出:
2017-02-26 16:13:44.8388|ERROR|NLogTest.Program|Debug test...
2017-02-26 16:13:44.8856|FATAL|NLogTest.Program|Debug test...
2017-02-26 16:13:44.8856|INFO|NLogTest.Program|Debug test...
2017-02-26 16:13:44.8971|WARN|NLogTest.Program|Debug test...
答案 1 :(得分:2)
basedir是相对于.exe
在这种情况下,它可能位于bin \ debug \ assets \ logging \ log.txt
中答案 2 :(得分:2)
您还需要将数据发送到控制台。 添加另一个发送到控制台的目标,如下所示: documentation
我认为您还应该将该目标放在rules
→logger
(writeTo
以及File
)
答案 3 :(得分:0)