Domanda

sto cercando di log alcune voci in un file di log (Log.Trace / Log.DEBUG) mentre i miei VS corse di prova di unità. Ho anche copiato il file NLog.config directory attraverso attributo DeploymentItem oltre la classe. Ancora non si crea il file di log. Qualsiasi aiuto su come possiamo voci di registro in un file stesso come facciamo per la normale applicazione web.

È stato utile?

Soluzione

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>

È possibile inserire qualsiasi configurazione che si desidera, come con il file NLog.config.

Altri suggerimenti

Purtroppo questa è l'unica soluzione XML al momento. Non si tratta solo di test di unità, però. NLog.config non funziona con un qualsiasi applicazione console.

Non so se è per il design o semplicemente una svista. Comunque non direi che il passaggio NLog.config alla sezione App.config è alcun modo soddisfacente = /

Forse vale la pena di notare che v'è la possibilità di configurare nlog direttamente dal codice, quello che potrebbe essere utile in alcuni scenari. Si potrebbe anche essere felice di trovare opzione di debug nlog, che registrerà l'intero processo di file di configurazione di elaborazione, registrando gli obiettivi e così via ...

Per attivarla, basta aggiungere internalLogFile e internalLogLevel attribuisce a NLog elemento:

<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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top