2009-11-04 2 views
5

Sto tentando di registrare alcune voci in un file di registro (Log.Trace/Log.Debug) mentre è in esecuzione il test dell'unità VS. Ho anche copiato il file NLog.config nella directory out attraverso l'attributo DeploymentItem sulla classe. Il mio file di registro non è ancora stato creato. Qualsiasi aiuto su come possiamo registrare le voci in un file come facciamo per la normale applicazione web.NLog con VS Unit Test

risposta

11

Ho appena trovato una soluzione a questo problema: aggiungere il file App.config al progetto di unit test yout con il seguente contenuto:

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

Puoi mettere qualsiasi configurazione che si desidera come con NLog. file di configurazione.

0

Sfortunatamente questa è l'unica soluzione XML al momento. Tuttavia, non si tratta solo di test unitari. NLog.config non funziona con nessuna applicazione console.

Non so se è di progettazione o solo una svista. In ogni caso non direi che spostare NLog.config nella sezione App.config è in qualche modo soddisfacente =/

Forse vale la pena notare che c'è la possibilità di configurare nlog direttamente dal codice, cosa potrebbe essere utile in alcuni scenari . Uno potrebbe anche essere felice di trovare l'opzione di debug di nlog, che registrerà l'intero processo di elaborazione del file di configurazione, registrazione degli obiettivi e così via ...

Per attivarlo, è sufficiente aggiungere gli attributi internalLogFile e internalLogLevel all'elemento 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"> 

o dal codice:

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

    InternalLogger.LogLevel = LogLevel.Trace;