您好,我想实现 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");
在这里我可以获得类名但不是方法名/行号(方法名比行号重要我可以删除行号)
最佳答案
您正在寻找的是 caller information attributes .NET Framework 4.5 可用:
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/