2009-11-04 13 views
5

Estoy intentando registrar algunas entradas en un archivo de registro (Log.Trace/Log.Debug) mientras se ejecuta mi prueba de unidad VS. También he copiado el archivo NLog.config en el directorio a través del atributo DeploymentItem sobre la clase. Todavía mi archivo de registro no se crea. Cualquier ayuda sobre cómo podemos registrar entradas en un archivo como lo hacemos para la aplicación web normal.NLog con VS 2008 Unit Test

Respuesta

11

que acaba de encontrar una solución a este problema: añadir el archivo a App.config proyecto de prueba de unidad de yout con el siguiente contenido:

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

Usted puede poner cualquier configuración que desea al igual que con Nlog. archivo de configuración.

0

Desafortunadamente esa es la única solución XML en ese momento. Sin embargo, no solo se trata de pruebas de unidades. NLog.config no funciona con cualquier aplicación de consola.

No sé si es por diseño o simplemente un descuido. De todos modos yo no diría que se mueve a la sección NLog.config App.config es de ninguna manera satisfactoria =/

Tal vez vale la pena notar que hay una posibilidad de configurar Nlog directamente desde el código, lo que podría ser útil en algunos escenarios . También podría alegrarse encontrar la opción nlog depuración, que registrará todo el proceso de procesamiento del archivo de configuración, registrando objetivos, etc.

Para activarlo, solo agregue los atributos internalLogFile e internalLogLevel al 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 de código:

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

    InternalLogger.LogLevel = LogLevel.Trace;