2017-12-02 6 views
0

ログをファイルに書き込むためにnlogを使用しています。現在、私が何かを記録すると、そのクラスのすべてを記録します。私は、例えば、特定の方法で、あなたは可能性コンフィグロガー名のルート/フィルタに代えてGetCurrentClassLoggernlogで特定の方法にログする

Logger logger = NLog.LogManager.GetLogger("myLogger"); 

GetLoggerを使用することができます。この場合

public void myMethod(){ 
     try 
     { 
     } 
     catch(Exception ex){ 
      Logger logger = NLog.LogManager.GetCurrentClassLogger(); 
      logger.Info("testing"); 
      logger.Log(LogLevel.Info, "Sample informational message"); 
     } 
} 
+0

「私が何かをログインしたときに、現在、それはそのクラスからすべてを記録します" どういう意味ですか ?あなたは例を挙げてくれますか?期待していないことは何を記録していますか? – lucky

+0

@Rainman私はそれがすべてのソリューションで実行されるすべてのメソッドを記録すると言っていた。 – Happy

答えて

1

を失敗している事を記録したいです:

<rule name="myLogger" minLevel="trace" writeTo="myFile" /> 
+0

myLoggerはどこですか? – Happy

+0

例を更新しました – Julian

1

私はあなたがそのクラスメソッドの名前をキャプチャしたい推測しています(クラス名だけでなく)ロギングを行っています。

これは(呼び出し場所でのクラス名、メンバ関数名、ソースファイルと行番号を提供することができます)NLogに呼び出し場所と呼ばれている:

https://github.com/NLog/NLog/wiki/Callsite-layout-renderer

機能を有効にすると、巨大なオーバーヘッドを与える(ウィル(ログイベントごとにFull StackTraceをキャプチャします)、それを有効にするときは注意してください(ただし、すべてのログイベントに対してGetCurrentClassLogger()を呼び出すのはちょっと高価です)。あなたはNLog・ロガーをラップし、発信者の情報は(はるかに良いパフォーマンスを)属性使用することにより、情報を自分でキャプチャすることができ

オルタナティブ:

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/caller-information

関連する問題