私は現在、組み込みのTraceListenerを使用してアプリケーションログライブラリを開発しています。このライブラリは多くのプロジェクトで使用され、単純なインターフェースを提供する必要があります。ここでは、何がログファイルに書き込まれるかについてのみ気を付けなければなりません。呼び出し方法とクラス名を調べる方法は?
リフレクション空間を使用することで、現在どのアプリケーションがログ関数(実行アセンブリ名の取得)と呼ばれているかを知ることができますが、ログ機能を呼び出す関数とクラスの名前も必要です。
のは、私が持っているとしましょう:
私は別のプロジェクトから呼び出すpublic static void LogInfo(string vLogText) {
Trace.WriteLine(
MethodInfo.GetCurrentMethod().Name
+ this.GetType().ToString() + vLogText);
}
(クラス:TestClassを、方法:のtestMethod)
Tracer.LogInfo("log this!")
私がログに見ることを期待:
TestClass, TestMethod, log this!
代わりに私は
TracerClass, LogInfo, log this!
親メソッドとクラス名の取得方法は?
var mth = new StackTrace().GetFrame(1).GetMethod();
var cls = mth.ReflectedType.Name;
// where 1 illustrates how deep into the stack to reflect.
あなたが助ける上で、古いフレームワークを使用しているが場合はよりエレガントな解決策は、C#5.0>にあります。
最新のC#とVS 2012を使用している場合は、[これは非常に役に立ちます](http://msdn.microsoft.com/en-us/library/hh534540.aspx) –
@ Trustme-I'maDoctor This華麗です!そんなことは知らなかった。あなたはコメントの代わりにこれを答えにして投票できるようにして、それを閉鎖してマークすることができますか?どうもありがとうございました。 – Neurodefekt
@Neurodefekt問題はありません。お役に立てて嬉しいです。 :) –