1

こんにちは、Logger クラスを実装して、ログ ファイル (テキスト ファイル) にメッセージを記録できるようにしたいと考えています。

これらのメッセージをファイルに記録することはできますが、どのメソッドがこのLogメソッドを呼び出したかなど、さらに説明が必要です。例えば

class MyClass
{
    void DoSomething()
    {
        Logger.Log("Doing my job");
    }
}

次に、Log.txt ファイルに次のようなメッセージが含まれている必要があります。

Date&time:Line No. 5:MyClass:DoSomething:Doing my job

日付と時刻とメッセージを取得するのは簡単ですが、メソッド名/クラス名/行番号を取得する方法がありません。

Logメソッドを次のようにオーバーロードしようとしました

Logger.Log(this,"your Message");

これで、クラス名は取得できますが、メソッド名/行番号は取得できません(メソッド名は行番号よりも重要です。行番号を削除できます)

4

1 に答える 1

4

探しているのは、 .NETFramework4.5で使用できるようになった発信者情報属性です。

void Log(string message, 
    [CallerMemberName] string memberName = "",
    [CallerFilePath] string sourceFilePath = "",
    [CallerLineNumber] int sourceLineNumber = 0) 
{
    // output the info to file
}

現在と同じようにメソッドを呼び出すことができLogます。コンパイラはオプションのパラメータの値を入力します。

この方法でクラス名を取得することはできませんが、メソッド名とファイル名の組み合わせでは不十分な場合でも、すでに提案したようにクラス名を取得できます。

于 2012-12-05T05:50:53.183 に答える