我有一个将日志写入.txt文件的应用程序
Helper.WriteSimpleDebugTrace(securityLogFilePath, "About to authenticate user.");
Helper.WriteSimpleDebugTrace(securityLogFilePath, "Directory Search Path:");
Helper.WriteSimpleDebugTrace(securityLogFilePath, "Username:" + username);
我只是想知道有没有办法将当前行号传递给这个方法?
答案 0 :(得分:3)
StackFrame class可以生成此信息。看看页面末尾的例子。
答案 1 :(得分:2)
你可能想要类似下面的方法。 Conditional属性将导致对此方法的所有调用在非调试版本中编译为空。然后,如果您抓取StackFrame 1而不是0,则会获得有关调试DebugPrintTrace的位置的信息。
[Conditional("DEBUG")]
public static void DebugPrintTrace(string message)
{
StackTrace stackTrace = new StackTrace(true);
StackFrame sf = stackTrace.GetFrame(1);
Console.WriteLine("Trace "
+ sf.GetMethod().Name + " "
+ sf.GetFileName() + ":"
+ sf.GetFileLineNumber() + Enviroment.NewLine);
Console.WriteLine(message + Enviroment.NewLine);
}
最好还在你的WriteSimpleDebugTrace中添加condtitional“DEBUG”