c# - 异常捕获和错误记录

标签 c# logging exception-handling error-handling

我有一个名为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\进行了硬编码,因为我仍在测试一些内容。但是我确实想在忘记之前把它做好。

有什么想法或建议吗?

谢谢。

最佳答案

通常,我使用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");

关于c# - 异常捕获和错误记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7566937/

相关文章:

python - 对于给定进程, `supervisorctl tail` 是如何工作的?

C#:递归调用中的异常处理

visual-studio-2010 - 为 Visual Studio 2010 VsPackage 制作全局异常处理程序

c# - 如何在 MVC4 StyleBundle 中引用 *.min.css 文件?

c# - 使用 OpenXML 在 Power Point 演示文稿中突出显示文本?

c# - Nunit 图形界面

python - 更改 logRecord 中的 levelname 格式

java - Logback 滚动日志记录不起作用

c++ - 处理超出范围的索引

c# - MongoDB - 在小型记录集上使用 C# 驱动程序时没有索引错误的 sort() 数据太多