2016-04-18 7 views
0

私は、adoNetappenderでSQLサーバにログオンしようとしていますが、app.configで動作しますが、appoutconfigが必要です。これはadoNetappenderのテストコードです。log4net app.configなし

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

名前空間TestAdoNet {

class Program 
{ 
    private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

    static void Main(string[] args) 
    { 
     Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); 

     PatternLayout patternLayout = new PatternLayout(); 
     patternLayout.ConversionPattern = "%date [%thread] %level %logger - %message%newline"; 
     patternLayout.ActivateOptions(); 

     AdoNetAppender adoNet = new AdoNetAppender(); 

     adoNet.BufferSize = 1; 
     adoNet.Layout = patternLayout; 
     adoNet.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; 
     adoNet.ConnectionString = "data source=.; initial catalog=test;integrated security=true;"; 
     adoNet.CommandText = "INSERT INTO Log2 ([Date],[Thread],[Level],[Logger], [Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"; 


     AdoNetAppenderParameter logDate = new AdoNetAppenderParameter(); 

     logDate.ParameterName = "@log_date"; 
     logDate.DbType = DbType.DateTime; 
     logDate.Layout = new RawTimeStampLayout(); 

     adoNet.AddParameter(logDate); 

     RawLayoutConverter rlc = new RawLayoutConverter(); 

     AdoNetAppenderParameter logThread = new AdoNetAppenderParameter(); 


     logThread.ParameterName = "@thread"; 
     logThread.DbType = DbType.String; 
     logThread.Size = 255; 
     logThread.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%thread")); 

     adoNet.AddParameter(logThread); 

     AdoNetAppenderParameter logLevel = new AdoNetAppenderParameter(); 

     logLevel.ParameterName = "@log_level"; 
     logLevel.DbType = DbType.String; 
     logLevel.Size = 50; 
     logLevel.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%level")); 

     adoNet.AddParameter(logLevel); 

     AdoNetAppenderParameter logLogger = new AdoNetAppenderParameter(); 

     logLogger.ParameterName = "@logger"; 
     logLogger.DbType = DbType.String; 
     logLogger.Size = 255; 
     logLogger.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%logger")); 

     adoNet.AddParameter(logLogger); 

     AdoNetAppenderParameter logMessage = new AdoNetAppenderParameter(); 

     logMessage.ParameterName = "@message"; 
     logMessage.DbType = DbType.String; 
     logMessage.Size = 4000; 
     logMessage.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%message")); 

     adoNet.AddParameter(logMessage); 

     AdoNetAppenderParameter logException = new AdoNetAppenderParameter(); 


     logException.ParameterName = "@exception"; 
     logException.DbType = DbType.String; 
     logException.Size = 2000; 
     logException.Layout = (IRawLayout)rlc.ConvertFrom(new ExceptionLayout()); 


     adoNet.ActivateOptions(); 
     hierarchy.Root.AddAppender(adoNet); 
     hierarchy.Root.Level = Level.All; 
     hierarchy.Configured = true; 


     logger.Error("test"); 

    } 
} 

私はrolingfileappenderと同じことを試み、それが私の唯一の問題は、今のSQL Serverで動作します。 エラーメッセージが表示されないので、何が間違っているのか分かりません。

+0

デバッグメッセージを表示するには[log4net診断ログを有効にする](http://stackoverflow.com/questions/756125/how-to-track-down-log4net-problems)が必要ですlog4netが出力している可能性があります。 – stuartd

答えて

0

おかげで私が見つけた@stuartdそれ

間違っ:ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;",

右:ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",

";"最後に問題がありました:D

関連する問題