2016-02-05 11 views
15

Chyba że całkowicie tego brakuje, mam wrażenie, że NLog documentation używa ${basedir} w swoich przykładach, nie wyjaśniając, jaka jest lokalizacja.

Gdzie mogę znaleźć informacje, które wymieniają wszystkie możliwe opcje z sensownym opisem?

mam tej konfiguracji zdefiniowane:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true"> 
    <targets> 
    <target name="file" xsi:type="File" 
       layout="${longdate} ${logger} ${message}" 
       fileName="${basedir}/logs/${shortdate}.txt" 
       keepFileOpen="false" 
       encoding="iso-8859-2" /> 
    </targets> 
    <rules> 
    <logger name="*" minlevel="Debug" writeTo="file" /> 
    </rules> 
</nlog> 

To działa w miarę mogę powiedzieć, ale nie mam pojęcia, gdzie się loguje cokolwiek.

+1

Pamiętaj, aby zmienić właściwości pliku w Visual Studio dla pliku NLog-config na opcję Kopiuj do katalogu wyjściowego => Zawsze. Alternatywny wstrzyknij nlog-config do app.config https://gist.github.com/Chrisso/1703644 –

Odpowiedz

14

${basedir} - katalog, w którym działa aplikacja. Wydaje mi się, że jest to pomocne: https://github.com/NLog/NLog/wiki/Layout-Renderers

+2

Więc folder 'bin \ debug', jeśli używasz go z VS? W takim przypadku to nie działa, ponieważ nie widzę żadnych plików. Nie dostaję żadnych błędów. – Spikee

+0

@Spikee Możesz to sprawdzić w swojej aplikacji przez AppDomain.CurrentDomain.BaseDirectory – galakt

+1

To jest rzeczywiście "bin \ debug", ale nie widzę podfolderu 'logs' ani żadnych plików. – Spikee

3

To zależy także od platformy. W przypadku zwykłych projektów .Net jest to w rzeczywistości bin lub bin/debug itp. (W zależności od ustawień kompilacji)

Dla coreclr/aspnet5 jest to folder bin środowiska wykonawczego dnx. To wciąż trwa.

2

już przewidziane na podstawie odpowiedzi i komentarze, odpowiedzi można podsumować dla aplikacji .NET:

AppDomain.CurrentDomain.BaseDirectory 

dla konsoli lub aplikacji Windows Forms, katalog ten jest bin/debug natomiast wewnątrz Visual Studio. Jeśli aplikacja zostanie wdrożona, ścieżka będzie najprawdopodobniej ścieżką wykonywalną.

W przypadku aplikacji internetowych (ASP.NET) będzie to katalog główny aplikacji WWW.

Niewidoczne pliki mogą być wywoływane przez kilka przyczyn, które obejmują: Błędy konfiguracji NLog i brak możliwości zapisania pliku docelowego. Aby odsłonić te błędy upewnij się, że plik NLog.config (lub nlog konfiguracja osadzone w pliku web.config lub app.config) określa wewnętrzną plik dziennika wyjściowych takich błędów:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     internalLogFile="C:\NLogError\NLog.log"> 

<!-- targets and rules come here --> 

</nlog> 
2

Inną możliwością niepowodzenia jest, że jeśli jesteś za pomocą NLog.config, NLog nie może znaleźć pliku konfiguracyjnego. Ustaw plik na Copy Always w swojej kompilacji, a znajdzie się on w katalogu bin, dzięki czemu NLog może go znaleźć w środowisku wykonawczym.

Jeśli skopiujesz informacje konfiguracyjne NLog do pliku App.config, problem nie wystąpi.

+0

Podobna mi była sytuacja, w której musiałem przełączyć opcję "Kopiuj na wyjście" dla kopii "NLog.xsd" (która jest wymieniona w konfiguracji NLog) w moim projekcie Visual Studio, zanim mogłem uzyskać jakiekolwiek logi pisać w folderze "bin/debug" podczas testowania. –

Powiązane problemy