在 Metro 应用中实现记录器类



嗨,我想实现 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");

在这里,我可以获取类名,但不能获取方法名称/行号(方法名称比行号重要,我可以删除行号)

您要查找的是 .NET Framework 4.5 中提供的调用方信息属性:

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

您仍然可以像现在一样调用 Log 方法,编译器将填写可选参数的值。

你不能以这种方式获取类名,但如果方法名和文件名的组合对你来说还不够,你仍然可以按照你自己已经建议的那样获取类名。

最新更新