2016-07-22 20 views
0

私はランダムにこの例外を取得しています。下のスタックトレースから、私はそれがlog4netの機能に由来していることを理解できます。 log4netのSystem.ArgumentOutOfRangeException log4net

/// <summary> 
    /// Logs message based on logger. 
    /// </summary> 
    /// <param name="logInformation">Log Information </param> 
    protected void LogMessage(LogInformation logInformation) 
    { 
     this.log = LogManager.GetLogger(logInformation.Logger); 
     log4net.Config.XmlConfigurator.Configure(); 

     if (!string.IsNullOrEmpty(logInformation.Request)) 
     { 
      ThreadContext.Properties["request"] = logInformation.Request; 
     } 

     if (!string.IsNullOrEmpty(logInformation.Response)) 
     { 
      ThreadContext.Properties["response"] = logInformation.Response; 
     } 

     if (!string.IsNullOrEmpty(logInformation.ResponseCode)) 
     { 
      ThreadContext.Properties["responsecode"] = logInformation.ResponseCode; 
     } 

     if (!string.IsNullOrEmpty(logInformation.Keys)) 
     { 
      ThreadContext.Properties["keys"] = logInformation.Keys; 
     } 

     //// Logs exception 
     this.Log(logInformation.Message, logInformation.LogLevel, logInformation.Exception); 
    } 

すべてのヘルプのための

LogExceptionValue - 
System.ArgumentOutOfRangeException: capacity was less than the current size. 
Parameter name: value 
at System.Collections.ArrayList.set_Capacity(Int32 value) 
at System.Collections.ArrayList.Add(Object value) 
at log4net.Util.LogReceivedEventHandler.Invoke(Object source, LogReceivedEventArgs e) 
at log4net.Util.LogLog.OnLogReceived(Type source, String prefix, String message, Exception exception) 
at log4net.Config.XmlConfigurator.InternalConfigure(ILoggerRepository repository) 
at log4net.Config.XmlConfigurator.Configure(ILoggerRepository repository) 
at log4net.Config.XmlConfigurator.Configure() 
at Loggers.LoggerBase.LogMessage(LogInformation logInformation) 
at LookupByReasonCode(String reasonCode) 

コードははるかに高く評価されるだろう。

+0

例外の原因となるコードを指定する必要があります。今、私たちが手伝ってくれるものは何もありません。 – krillgar

+0

スタックトレースに 'XmlConfigurator.Configure'と記載されているので、あなたの設定を表示してください – stuartd

+0

私はLog4netコードで私の質問を編集しました。詳細情報が必要な場合は教えてください –

答えて

1

あなたはこの断続的にを取得している場合は、すべての単一のロギングコールと2つのスレッドがしようとすると同時に、それをロードしている上にlog4netの設定をロードしているので、それが最も可能性が高いです。

スタートアッププログラムにXmlConfigurator.Configure();を移動し、一度だけ呼び出します。

+0

ええ。これは私が思った理由の一つかもしれません、私があなたに –