嗨,我想实现 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
方法,编译器将填写可选参数的值。
你不能以这种方式获取类名,但如果方法名和文件名的组合对你来说还不够,你仍然可以按照你自己已经建议的那样获取类名。