2015-03-19 17 views
0

我正在使用Log4Net將異常記錄到數據庫。它工作正常,但我必須指定下面的日誌插入查詢到app.config文件。從app.config文件中刪除記錄查詢

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

如何從配置文件中刪除此查詢並將其指定爲來自代碼。

我正在使用C#桌面應用程序。

回答

1

像這樣:

public static class LogConfigurator 
{ 
    public static void SetCommandText(string commandText) 
    { 
     Hierarchy logHierarchy = log4net.LogManager.GetRepository() 
           as Hierarchy; 

     if (logHierarchy == null) 
     { 
      throw new InvalidOperationException(
       "Can't set command text as log4net has not been configured"); 
     } 

     // assume there is only one appender to configure 
     var appender = logHierarchy.GetAppenders() 
            .OfType<AdoNetAppender>() 
            .SingleOrDefault(); 

     if (appender == null) 
     { 
      throw new InvalidOperationException 
       ("Can't set command text as can't locate a database appender"); 
     } 

     appender.CommandText = commandText; 
     appender.ActivateOptions(); 
    } 
}