异常捕获和错误记录

发布于 2024-12-06 20:12:23 字数 639 浏览 0 评论 0原文

我有一个名为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

九歌凝 2024-12-13 20:12:23

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

错误会记录在数据库中。

Look at ELMAH This is very efficient in handling and catching errors in the application.

The errors get logged in the database.

故人爱我别走 2024-12-13 20:12:23

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

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.GetLogger().Log("test");

Usually I'm using the Singleton pattern to have one application wide 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();
    }
}

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:

Logger.GetLogger().Log("test");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文