您好我想实现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");
在此我可以获取类名但不能获取方法名称/行号(方法名称比行号更重要,我可以删除行号)
答案 0 :(得分:4)
您正在寻找的是.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
方法,编译器将填写可选参数的值。
您无法以这种方式获取类名,但如果方法名称和文件名的组合对您来说还不够,您仍然可以获得自己已经建议的类名。