[C#] ログのとり方

プログラムのログを採取するため、関数の入り口と出口に「START」と「END」とログファイルに出力させたいことはないだろうか?たとえばそのメソッドが、


void func()

だとすると、「func start」「func end」みたいなログをとろうとすると、


Console.WriteLine("func start");
/*
* 何か処理
*/

Console.WriteLine("func end");

というようなコードになると思う。でもこれ、メソッド名によって変えなきゃならんし、しかももし途中でメソッド名が変われば修正しないといけない。そこで、メソッド名が変わっても修正しなくてもいいようなことってできんやろかーっと色々調べていると、以下のような書き方でできることがわかった。


void func()
{
Console.WriteLine( (new System.Diagnostics.StackTrace(true)).GetFrame(0).GetMethod().Name + " START");

/*
* 何か処理
*/

Console.WriteLine( (new System.Diagnostics.StackTrace(true)).GetFrame(0).GetMethod().Name + " E N D");
}

でも、毎回 new するので、ちょっと嫌。もっといいやり方をご存知の方、どうかおせーてくださいナ。