2016-03-22 2 views
-1

Guten Tag, Ich bin mit Problem konfrontiert. Ich versuche NLog, Konfigurationscode ist unterNLog kann keine Protokolldatei auf Festplatte schreiben

var config = new LoggingConfiguration(); 

var fileTarget = new FileTarget(); 
config.AddTarget("file", fileTarget); 

fileTarget.FileName = @"D:\" + filename; 
fileTarget.Layout = @"${date:format=HH\:mm\:ss} ${logger} ${message}"; 

var rule1 = new LoggingRule("*", LogLevel.Debug, fileTarget); 
config.LoggingRules.Add(rule1); 

LogManager.Configuration = config; 

Logger logger = LogManager.GetLogger("Example"); 
logger.Debug("debug log message"); 

Code wurde aus einem Tutorial entnommen. Und nichts ist passiert. Die Protokolldatei wurde nicht auf Datenträger D erstellt. Sie wurde jedoch im Ausgabeverzeichnis des Projekts erstellt. Ich habe versucht @"C:\" + filename. Ich war überrascht, aber Log-Datei war da.

Dann habe ich versucht, auf @"D:\SomeFolder\" + filename zu loggen und Datei war auch da.

Also, kann mir jemand helfen zu verstehen, was mit @"D:\" + filename falsch ist.

P.S. Visual Studio 2013 wird mit Administratorrechten ausgeführt. Außerdem habe ich versucht ${basedir}. Alles war in Ordnung.

+0

Haben Sie versucht zu suchen? In 99,999% der Fälle handelt es sich um ein Berechtigungsproblem, doch erwähnen Sie nichts über den Kontext (das ist eine Desktop-Anwendung oder eine Webanwendung) oder die Berechtigungen. Im Allgemeinen ist das Stammverzeichnis einer Festplatte mit ihren Berechtigungen ziemlich restriktiv. Siehe auch [Fehlerbehebung bei der Protokollierung · NLog/NLog-Wiki · GitHub] (https://github.com/NLog/NLog/wiki/Logging-troubleshooting), der erste Google-Treffer für "nlog not writing file". – CodeCaster

+0

@CodeCaster, hallo. Ich versuche es zu suchen. Auch ich habe Berechtigungen überprüft. Vielleicht habe ich etwas verpasst. Ich werde es noch einmal überprüfen. Dies ist eine Desktop-Anwendung. CD C ist Systemdiskette, also wurde ich cunfused, dass D weniger Berechtigungen hat. – Max

Antwort

1

Die interne Protokollierung von NLog aktivieren. Überprüfe, was du dort hast. Anstatt die Datei internal log zu schreiben, schreiben Sie sie in die Konsole.

// enable internal logging to the console 
    InternalLogger.LogToConsole = true; 

Blick auf Fehler in den internen Protokollen. Sie werden die Idee bekommen, warum es nicht funktioniert.

+0

danke für die Antwort. Ihre Antwort war hilfreich, danke. Ich habe keine Ausnahme gefunden, aber ich merke, NLog "essen" "\" Symbol. Einige Protokolle sehen aus wie 'D: \ file.txt' und ein anderes 'D: file.txt'. Ich wechselte zu 'D: \\ file.txt' und alles funktionierte. – Max

+1

Dieser Fehler wird in NLog 4.3 (rc3) https://github.com/NLog/NLog/issues/1350 behoben – Julian