我正在维护一个网站,该网站具有错误日志功能。
客户偶尔会在网站上遇到问题,但只能在堆栈跟踪中看到方法调用层次结构和异常发生的位置,而不能显示出错行号。
在我的开发环境中显式引发异常时,异常的堆栈跟踪显示了方法调用层次结构及其实际异常发生的行号。
我知道在生产环境中,我们仅部署DLL,这就是为什么日志文件中没有获得错误行号的原因。
有人有任何想法,如何在仅部署DLL(程序集)时也能获取异常的错误行号吗?
public static void NDLogException(Exception ex,
[System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "",
[System.Runtime.CompilerServices.CallerMemberName] string memberName = "",
[System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 0)
这是C#5的新功能,例如你可以这样做:
public class LogManager
{
public void LogException(Exception exc,
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = 0)
{
Trace.WriteLine(string.Format("Date: {0}", DateTime.Now));
Trace.WriteLine(string.Format("Exception: {0}", exc.Message));
Trace.WriteLine(string.Format("Occured in: {0}", memberName));
Trace.WriteLine(string.Format("source file path: {0}", sourceFilePath));
Trace.WriteLine(string.Format("source line number: {0}", sourceLineNumber));
}
}