2017-02-26 124 views
3

一些奇怪的原因n日誌不顯示任何東西,當我寫到控制檯,在Program.cs中Main()方法我分配nlog.config:NLog不顯示任何內容?

LogManager.Configuration = new XmlLoggingConfiguration("assets/packages/nlog/nlog.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..."); 
} 

我知道正在調用的方法,因爲我得到的「笑」,只是沒有實際在控制檯上的日誌,但它確實寫到/assets/logging/log.txt文件。

+0

你確認你的文件名的路徑是正確的:

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的輸出? –

+0

是的,如果不是,它會拋出異常。 – Ashkru

+0

請檢查https://github.com/NLog/NLog/wiki/Internal-logging – Julian

回答

2

的BASEDIR是相對的.exe

在這種情況下,它很可能是在斌\調試\資產\日誌\ log.txt的

2

您需要將數據發送到控制檯爲好。 添加另一個發送到控制檯的目標,如下所示: Nlog Console target git hub example

而且我想你也應該把這個目標在ruleslogger(在writeTo隨着File

4

爲了看你有沒有添加目標,併爲它的規則在控制檯上的日誌輸出像這樣:

<?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> 

通過(使用上述配置文件)創建一個簡單的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..."); 
    } 
} 

或者,你可以直接在課堂上使用的記錄器這樣的:

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...