2010-07-19 9 views
11

Actualmente estoy buscando algún código o herramienta/servicio que me permita almacenar mensajes Log4Net en una base de datos SQL Server. ¿Ya existe algo como esto o tendré que implementar esto por mi cuenta? No pude encontrar nada en SO o Google.Almacenamiento de mensajes Log4Net en SQL Server

Gracias de antemano por cualquier información.

+0

Puede usar adonetappender para almacenar log4net en la base de datos del servidor sql, consulte este buen artículo en la base de datos log4net http://goo.gl/Jf9CkH – virender

Respuesta

19

Usted puede aprender sobre esto en el manual

También una buena blog sobre problemas usando log4net con los registros guardados en una base de datos.

+0

+1 por responder indirectamente a la pregunta, mientras me sigue dando mi humor diario – PostMan

+0

Vaya, tiene usted razón, lo siento, lo supervisé totalmente, es hora de tomar un café, supongo ... – Mark

+0

No problemas, intento recordar si hay cosas de las que tener cuidado ... de hecho, había algo en blog.stackoverflow.com, va a profundizar más ... – si618

12

Lo que ensucia con todos es copiar/pegar sin conocer los detalles.Ejemplo: <bufferSize value="100" /> Eso significa que no registrará de tabla de la base hasta que choca con 100 entradas en el buffer de escribir en la tabla db.

Para la prueba/juego de depuración búfer a 1

Aviso ventana de autenticación, junto con . para locales

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
    <bufferSize value="1" /> <!--Change to 10 or MORE This is critical , after 10 messages then log to database--> 
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <!--<connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />--> 
    <connectionString value="data source=.;initial catalog=InternTracking;integrated security=true;" /> 
    <commandText value="INSERT INTO InternLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
    <commandType value="Text"/> 
    <!--<commmandText value="dbo.procLog_Insert"/> 
    <commandType value="StoredProcedure"/>--> 
    <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> 

siguiente que va a utilizar app.config o "raíz" web.config para tenerlo llamado

<root> 
    <level value="DEBUG" /> 
    <!--<appender-ref ref="FileAppender"/>--> 

    <appender-ref ref="AdoNetAppender"/> 
</root> 
+0

¿Qué sucede en la terminación temprana o inesperada luego a los valores en el búfer? es decir, si solo hay 50 y no las 100 completas. ¿Se envían o se pierden? – Mdev

+0

@Mdev - Estoy bastante seguro de que no están perdidos. Olvidé cómo se almacenan/conservan hasta que se alcanza el número de búfer. Disculpa, avísame si encuentras la respuesta. Pasé a otro proyecto que no me tiene relacionado con ningún registro, etc. –

+0

He iniciado sesión en stackoverflow para darte un +1 :) –

Cuestiones relacionadas