【问题标题】:Exception capturing and Error logging异常捕获和错误记录
【发布时间】:2011-11-25 21:16:27
【问题描述】:

我有一个实用程序类,叫做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\ 进行了硬编码,因为我仍在测试一些东西。但我确实想在我忘记之前把它弄好。

那么有什么想法或建议吗?

谢谢。

【问题讨论】:

    标签: c# logging exception-handling error-handling


    【解决方案1】:

    ELMAH 这在处理和捕获应用程序中的错误方面非常有效。

    错误被记录在数据库中。

    【讨论】:

    • 不过还是很高兴知道。将来对asp.net dev有帮助。
    【解决方案2】:

    通常我使用单例模式来拥有一个应用程序范围的 Logger。

    public class Logger
    {
        protected static Logger _logger;
    
        protected Logger()
        {
            // init
        }
    
        public void Log(string message)
        {
            // log
        }
    
        public static Logger GetLogger()
        {
            return _logger ?? _logger = new Logger();
        }
    }
    

    作为存储数据的地方,我会使用应用程序数据或用户数据目录,只有在那里你才能确保有写入权限。

    编辑:这就是您在代码中的任何位置使用 Logger 的方式:

    Logger.GetLogger().Log("test");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-08
      • 2020-07-30
      • 2015-06-11
      • 1970-01-01
      • 2013-05-02
      • 2014-05-31
      • 2014-03-21
      • 2010-12-14
      相关资源
      最近更新 更多