异常捕获和错误记录

时间:2011-09-27 09:29:13

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

我有一个名为ErrorLog的实用程序类,它基本上会执行一些基本的错误记录,记录错误消息,堆栈跟踪等。

所以在我的主要c#app中,我几乎总是将这段代码ErrorLog el = new ErrorLog()放入catch(Exception e)部分,然后开始调用它的方法来进行记录。

例如,这是ErrorLog class

中的一个方法
public void logErrorTraceToFile(string fname, string errorMsg, string errorStackTrace)
{ 
    //code here
}

无论如何,我只是想知道以这种方式记录错误是否是一个好方法?在我看来,这个解决方案有点笨拙。 (考虑在每个catch块中创建el对象并重复调用其方法。)

另外,在存储错误日志文件方面,保存它们的最佳/最合理位置?目前,我只是对目录C:\ErrorLogs\进行了硬编码,因为我还在测试一些东西。但我确实想在忘记之前把它弄好。

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

错误会记录在数据库中。

答案 1 :(得分:0)

通常我使用Singleton模式来拥有一个应用程序范围的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");