2009-04-13 11 views
2

Ich habe Log4net aktiviert und führen Sie meine App, die eine Ausnahme gibt.NHibernate Aktivieren log4net

Die Protokolldatei ist jedoch leer.

Nicht NHibernate Log-Informationen über die Ausnahme ???

Malcolm

+1

vermuten wir vielleicht ein bisschen mehr Informationen benötigen .... –

Antwort

5

Sie müssen log4net konfigurieren. Nur indem log4net dll zum Projekt hinzugefügt wird, wird nichts protokolliert. Sie müssen Appender erstellen, um anzugeben, an wen der gesamte Loggin verwiesen werden soll. Erstellen Sie eine XML-Datei wie diese:

 

<log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="Logs\Trace.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Composite" /> 
     <maxSizeRollBackups value="30" /> 
     <maximumFileSize value="1000KB" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level - %message%newline" /> 
     </layout> 
     <threshold value="DEBUG"/> 
    </appender> 
    <root> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 
</log4net> 
 

... und es konfigurieren, wenn die Anwendung der Inbetriebnahme:

 

    public static void Main() 
    { 
     var logconfig = new System.IO.FileInfo(PATH_TO_LOG_CONFIG); 
     if(logconfig.Exists) 
     { 
      log4net.Config.XmlConfigurator.ConfigureAndWatch(logconfig); 
     } 
    } 
 
+0

Hadi, wie funktioniert das geht soweit bis Unit Tests wo es kein Main gibt? Verwenden Sie TestDriven.Net zum Beispiel –

+1

Warum konfigurieren Sie Log4Net nicht in Ihrer Testkonfiguration (d. H. Basisklasse), um einen ConsoleAppender zu erstellen und alle Protokollnachrichten an Console umzuleiten? Die meisten Testläufer zeigen sie auf die eine oder andere Weise an. –