2016-08-10 1 views
1

Das ist meine Konfigurationsdatei enthält log4net Attribute, wenn ich "RollingLogFileAppender" appender es schreibt Datei richtig, aber ich verwende "AdoNetAppender" und erwarten, die gleiche Zeichenfolge in der Spalte Nachricht zu sehen der eingefügten Zeile. Aber irgendwie funktioniert das nicht.log4net Datei schreiben ist in Ordnung, kann aber nicht in die Datenbank einfügen

(Tabelle Definitionen und Abfrage-Konfigurationen sind von Apache-Dokumentation, so kann es nicht falsch sein, ich obwohl Verbindungsstring ist mein Problem, aber Anwendung bereits Verbindung mit der gleichen db Ich habe auch die Verbindungszeichenfolge ist von adonet) wurde

<log4net debug="true"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\\AkisLog\\Logs.txt" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
     </layout> 
    </appender> 
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="100" /> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="data source=******\SQLTEST;initial catalog=LISANSSIZ_SANTRAL_PROJE_ONAY;persist security info=True;user id=user;password=pwd" /> 
     <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
     <parameter> 
     <parameterName value="@log_date" /> 
     <dbType value="DateTime" /> 
     <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
     <parameter> 
     <parameterName value="@thread" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%thread" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@log_level" /> 
     <dbType value="String" /> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@logger" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%logger" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@message" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%message" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@exception" /> 
     <dbType value="String" /> 
     <size value="2000" /> 
     <layout type="log4net.Layout.ExceptionLayout" /> 
     </parameter> 
    </appender> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="AdoNetAppender" /> 
    </root> 
    </log4net> 


... 
<connectionStrings> 
    <add name="TedasDbContext" connectionString="metadata=res://*/Project.csdl|res://*/Project.ssdl|res://*/Project.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=****\SQLTEST;initial catalog=LISANSSIZ_SANTRAL_PROJE_ONAY;persist security info=True;user id=user;password=pwd;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

Und CS-Datei verwendet:

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

if (log.IsErrorEnabled) 
{ 
    log.Error("Error ocurred here"); 
} 

if (log.IsDebugEnabled) 
{ 
    log.Debug("Debug message"); 
} 
+0

Stellen Sie sicher, dass der Aufrufer über Berechtigungen zum Schreiben in die Datenbank verfügt. Aktivieren Sie auch das interne log4net-Debugging, und sehen Sie sich die Ausgabe an. – stuartd

Antwort

2

Ihre Puffergröße ist 100, was bedeutet, dass Nachrichten nach 100 Nachrichten geschrieben werden. Ändern Sie ihn auf 1, werden die Nachrichten direkt an die SQL-Datenbank bündig:

<bufferSize value="1" /> 

Wenn das nicht funktioniert, aktivieren Sie log4net interal Debuggen zu sehen, wenn Sie Verbindungsprobleme haben. Überprüfen Sie auch, ob Sie die neueste Version von log4net haben.

+0

hey, du hast meinen Tag gemacht, vielen Dank – TyForHelpDude

Verwandte Themen