2009-11-04 5 views
5

Próbuję zalogować niektóre wpisy w pliku dziennika (Log.Trace/Log.Debug), podczas gdy mój test jednostki VS działa. Skopiowałem również plik NLog.config do katalogu poza programem za pomocą atrybutu DeploymentItem na klasę. Wciąż mój plik dziennika nie jest tworzony. Dowolna pomoc dotycząca sposobu rejestrowania wpisów w pliku tak samo jak w przypadku zwykłej aplikacji internetowej.NLog z VS 2008 Unit Test

Odpowiedz

11

Właśnie znalazł rozwiązanie tego problemu: dodać plik app.config do projektu badanej jednostki yout o następującej treści:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> 
    </configSections> 

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

    <targets> 
     <target name="debugLog" xsi:type="Console" /> 
    </targets> 

    <rules> 
     <logger name="*" minlevel="Debug" writeTo="debugLog"></logger> 
    </rules> 

    </nlog> 

</configuration> 

może umieścić dowolną konfigurację chcesz jak z NLog. plik konfiguracyjny.

0

Niestety, jest to jedyne rozwiązanie XML w tym czasie. Nie chodzi jednak tylko o testowanie jednostek. NLog.config nie działa z żadną aplikacją konsolową.

Nie wiem, czy jest to projektowane, czy tylko niedopatrzenie. W każdym razie nie powiedziałbym, że przenoszenie NLog.config do sekcji App.config jest w jakiś sposób satysfakcjonujące =/

Może warto zauważyć, że istnieje możliwość konfiguracji nlog bezpośrednio z kodu, co może być pomocne w niektórych scenariuszach . Można również znaleźć opcję debugowania nlog, która będzie rejestrować cały proces przetwarzania pliku konfiguracyjnego, rejestrowania celów itd.

Aby go włączyć, wystarczy dodać atrybut internalLogFile i internalLogLevel do elementu nlog:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="C:/logs/nlog.txt" internalLogLevel="Debug"> 

lub z kodu:

InternalLogger.LogFile = @"c:\logs\nlog.txt"; 

    InternalLogger.LogLevel = LogLevel.Trace;