异常捕获和错误记录
我有一个名为 ErrorLog
的实用程序类,它基本上执行一些基本的错误日志记录之类的操作,记录错误消息、堆栈跟踪等。
因此,在我的主 C# 应用程序中,我几乎总是删除这段代码、 ErrorLog el = new ErrorLog()
到 catch(Exception e)
部分,然后开始调用其方法进行日志记录。
例如,这是 ErrorLog
类中的方法之一
public void logErrorTraceToFile(string fname, string errorMsg, string errorStackTrace)
{
//code here
}
无论如何,我只是想知道以这种方式记录错误是否是一个好方法?在我看来,这个解决方案有点笨拙。 (考虑在每个 catch 块中创建 el 对象并重复调用其方法。)
此外,就存储错误日志文件而言,它是最佳/最合理位置拯救他们?目前,我只是对目录 C:\ErrorLogs\
进行了硬编码,因为我仍在测试一些内容。但我确实想在忘记之前把它做好。
那么有什么想法或建议吗?
谢谢。
I have got a utility class, called ErrorLog
, which basically does some basic error logging kinda stuff, recording error messages, stacktraces, etc.
So in my main c# app, I almost always chuck this piece of code, ErrorLog el = new ErrorLog()
into the catch(Exception e)
part, and then start calling its methods to do logging.
For example, here is 1 of the methods in ErrorLog
class
public void logErrorTraceToFile(string fname, string errorMsg, string errorStackTrace)
{
//code here
}
Anyway, I am just wondering if it's a good approach to log errors in this way? It seems to me that this solution is a bit clumsy. (considering in each catch block you create el
object and call its method, repeatedly.)
Also, in terms of storing error log files, where it the best / most reasonable location to save them? Currently, I just hard-coded the directory, C:\ErrorLogs\
, as I am still testing a few things. But I do want to get it right before I forget.
So any ideas or suggestions?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看 ELMAH 这对于处理和捕获应用程序中的错误非常有效。
错误会记录在数据库中。
Look at ELMAH This is very efficient in handling and catching errors in the application.
The errors get logged in the database.
通常我使用单例模式来拥有一个应用程序范围的记录器。
作为存储数据的地方,我将使用应用程序数据或用户数据目录,只有在那里你才能确保具有写访问权限。
编辑:这就是您从代码中的任何位置使用记录器的方式:
Usually I'm using the Singleton pattern to have one application wide Logger.
As a place to store data I would use the application data or user data directory, only there you can be sure to have write access.
Edit: That's how you would use the Logger from any place in your code: