嗨,我想实现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中可用的caller information attributes

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


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

您无法通过这种方式获取类名,但是如果方法名和文件名的组合不足以满足您的要求,您仍然可以按照自己的建议获取类名。

关于c# - 在Metro应用程序中实现Logger类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13716823/

10-11 02:03