2 votes

Log log4net valeur numérique du niveau

Je voudrais enregistrer la valeur numérique correspondant au niveau de journalisation lorsque j'utilise log4net. C'est-à-dire qu'actuellement, j'enregistre dans la base de données avec le texte de commande suivant :

<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />

   <parameter>
    <parameterName value="@log_level" />
    <dbType value="String" />
    <size value="50" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%level" />
    </layout>
  </parameter>

Je voudrais changer la valeur de la chaîne de caractères du niveau de journalisation en valeur numérique. Est-ce possible ?

5voto

Stefan Egli Points 11708

Je ne l'ai pas testé mais ce qui suit devrait fonctionner.

Vous pouvez créer votre propre convertisseur comme ceci :

sealed class NumericLevelPatternConverter : PatternLayoutConverter 
{
    override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
    {
        // maybe you need to call ToString() on the value property
        writer.Write( loggingEvent.Level.Value ); 
    }
}

et dans le fichier de configuration :

<layout type="log4net.Layout.PatternLayout">
    <converter>
        <name value="levelId" />
        <type value="YourNamespace.NumericLevelPatternConverter" />
    </converter>
    <conversionPattern value="%levelId" />
</layout>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X