CodePaste Logo
New Snippet New Snippet Recent Snippets Recent Snippets My Snippets My Snippets Web Code Search Snippets Search
Sign inor Register
Language: C#

SqlAppender

269 Views
Copy Code Show/Hide Line Numbers
   1:  public class SqlAppender : AppenderSkeleton
   2:  {
   3:      private static readonly string CommandText = "INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)";
   4:   
   5:      public string ConnectionString { get; set; }
   6:   
   7:      protected override void Append(LoggingEvent loggingEvent)
   8:      {
   9:          using (var conn = new SqlConnection(ConnectionString))
  10:          using (var cmd = new SqlCommand(CommandText, conn))
  11:          {
  12:              cmd.CommandType = CommandType.Text;
  13:   
  14:              cmd.Parameters.Add(AddParameter("@log_date", SqlDbType.DateTime, 0, ParameterDirection.Input, false, loggingEvent.TimeStamp));
  15:              cmd.Parameters.Add(AddParameter("@thread", SqlDbType.VarChar, 255, ParameterDirection.Input, false, loggingEvent.ThreadName));
  16:              cmd.Parameters.Add(AddParameter("@log_level", SqlDbType.VarChar, 50, ParameterDirection.Input, false, loggingEvent.Level.Name));
  17:              cmd.Parameters.Add(AddParameter("@logger", SqlDbType.VarChar, 255, ParameterDirection.Input, false, loggingEvent.LoggerName));
  18:              cmd.Parameters.Add(AddParameter("@message", SqlDbType.VarChar, 4000, ParameterDirection.Input, false, loggingEvent.RenderedMessage));
  19:              cmd.Parameters.Add(AddParameter("@exception", SqlDbType.VarChar, 2000, ParameterDirection.Input, true, loggingEvent.GetExceptionString()));
  20:   
  21:              conn.Open();
  22:              cmd.ExecuteNonQuery();
  23:          }
  24:      }
  25:   
  26:      private SqlParameter AddParameter(string name, SqlDbType dbType, int size, ParameterDirection direction, bool isNullable, object value)
  27:      {
  28:          return new SqlParameter(
  29:              name,
  30:              dbType,
  31:              size,
  32:              direction,
  33:              isNullable,
  34:              0,
  35:              0,
  36:              string.Empty,
  37:              DataRowVersion.Default,
  38:              value
  39:              );
  40:      }
  41:  }
by Jon Sagara
  April 25, 2010 @ 1:14am
Tags:
Description:
An Appender for log4net that obeys TransactionScopeOption.Suppress.

Add a comment


Report Abuse
brought to you by:
West Wind Techologies



If you find this site useful and use it frequently please consider making a donation to support this free service.
Donate