2010-07-19 4 views
11

Je recherche actuellement du code ou un outil/service qui me permet de stocker des messages Log4Net dans une base de données SQL Server. Est-ce que quelque chose comme ça existe déjà ou est-ce que je devrais le mettre en œuvre par moi-même? Je n'ai rien trouvé sur SO ou Google.Stockage des messages Log4Net dans SQL Server

Merci d'avance pour toute information.

+0

Vous pouvez utiliser adonetappender pour stocker log4net dans la base de données du serveur SQL, vérifiez ce bon article sur la base de données log4net http://goo.gl/Jf9CkH – virender

Répondre

19

Vous pouvez en apprendre davantage à ce sujet dans le manual

également une bonne blog au sujet des problèmes en utilisant log4net avec les journaux enregistrés dans une base de données.

+0

+1 pour répondre indirectement à la question, tout en me fournissant mon humour quotidien – PostMan

+0

Gee vous avez tellement raison, désolé j'ai supervisé totalement celui-là, le temps pour un café je suppose .. – Mark

+0

Non problèmes, j'essaie de me rappeler s'il y a des choses à surveiller ... en fait, il y avait quelque chose sur blog.stackoverflow.com, qui creusera plus loin ... – si618

12

Quel désordre avec tout le monde est copier/coller sans connaître les détails.Exemple: <bufferSize value="100" /> Cela signifie qu'il n'enregistrerez à la table de base de données jusqu'à ce qu'il frappe 100 entrées dans le tampon d'écrire à la table db.

Pour les tests/jeu de tampons de débogage à 1

le long de la fenêtre d'authentification avec Avis . pour locale

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

Ensuite, vous utiliserez app.config ou web.config "root" pour avoir appelé

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

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

Que se passe-t-il sur une fin prématurée ou inattendue alors aux valeurs dans le tampon? c'est-à-dire s'il n'y en a que 50 et pas 100. Sont-ils envoyés ou sont-ils perdus? – Mdev

+0

@Mdev - Je suis assez sûr qu'ils ne sont pas perdus. J'oublie comment ils sont stockés/conservés jusqu'à ce que le numéro de tampon soit atteint. Désolé - faites-moi savoir si vous trouvez la réponse - je me suis déplacé sur un autre projet qui ne m'a pas eu affaire à n'importe quel enregistrement etc. –

+0

J'ai connecté dans stackoverflow pour vous donner un +1 :) –