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

您正在寻找的是 .NET Framework 4.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 回答