2016-08-18 11 views
0

静的コンストラクタにパラメータを渡すことはできません。静的コンストラクタにパラメータを渡して行番号を減らす方法

:しかし、私はそれゆえ、私は私がここに

は私のロガークラス(それはlog4netのを使用していますが、そのない場合)である。このクラスの各機能useageのための行を複製する必要がある変数を初期化パラメータで、この静的クラスを使用しています

public static class Logger 
    { 
     private static ILog log {get; set;} 
     static Logger() 
     { 
      log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
     } 
     public static void Error(object msg, string userip) 
     { 

      log4net.LogicalThreadContext.Properties["ClientIp"] = userip; 
      if (log.IsErrorEnabled) 
      { 
       log.Error(msg); 
      } 
     } 
     public static void Error(object msg, string userip, Exception ex) 
     { 
      log4net.LogicalThreadContext.Properties["ClientIp"] = userip; 

      if (log.IsErrorEnabled) 
      { 
       log.Error(msg, ex); 

私はすべての種類のログメソッドのカスタム "ClientIp"フィールドを追加する必要があると思います。しかし、私は繰り返したくない。

log4net.LogicalThreadContext.Properties ["ClientIp"] = userip;

static Logger() 
      { 
       log4net.LogicalThreadContext.Properties["ClientIp"] = userip; 
       log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
      } 

が、私は..静的コンストラクタに何かアドバイスをパラメータを渡すカント:私は私はこのようなコンストラクタを編集することができたい 各メソッドの

ライン?

+0

静的なプロパティを作成し、始めに 'public static string UserIP {get; set;}'のように設定してください –

+0

useripパラメータはどこから来ますか?それが呼び出されるたびに変化しませんか? – Chris

+0

@CallumLiningtonこれは私が今しようとしているのですが、httpcontext.currentの問題が少しあります。 – TyForHelpDude

答えて

0

起動時に一度だけ呼び出すInitializeメソッドを作成します。一度設定する必要がある変数を渡します。以降のすべての呼び出しで、それらの値を再利用できます。

+0

あなたの投稿を詳しく説明できますか? – TyForHelpDude

関連する問題