嗨,我想实现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/