.net - 记录日志的最佳方法是什么?

标签 .net vb.net logging

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




我的(本地、windows/mono)应用程序将重要事件记录到文本文件中。在突然崩溃/失败/强制退出的情况下,不应该保留任何数据(尽可能)。因此,我目前使用一种简单的附加到文本文件的方法:

Public Shared Sub LogAppEvent(ByVal EventData As String)
    Dim Config As ConfigHandler = ConfigHandler.GetSingleton()
    Dim AppLog As New IO.StreamWriter(Config.GetUserFilesRootDir() & ConfigOptions.AppLogName, True)
    AppLog.WriteLine(String.Format("[{0}] {1}", Date.Now.ToString(), EventData))
    AppLog.Close()
End Sub

这是非常次优的,但日志事件非常罕见。你会建议搬到 System.Diagnostics 吗?日志类?

或者,也许您会建议另一种解决方案?

最佳答案

如果像这样的 super 基本方法在功能上足以满足您的需求,您可以坚持下去。但是,您可能会问自己几个问题以确保:

  • 是否可以通过多个线程同时记录事件?此函数不是线程安全的
  • 是否需要错误通知?
  • 在没有自动修剪的情况下,是否存在日志文件无限增长的风险?
  • 您是否会受益于更广泛的日志记录,以便您获得有关导致错误的事件的更多信息?
  • 您是否会从有关错误的更多详细信息(堆栈跟踪、异常详细信息等)中受益
  • 您的程序是否在多台计算机上运行?如果是这样,日志如何到达您手中?
  • 帮助分析日志文件的工具是否有任何需要/值(value)(单独或查找模式,例如跨多个日志文件的常见错误)?

  • 如果您决定有其他要求,可以使用许多免费的日志记录框架,例如 NLog or log4net可以帮助记录更详细的日志,还有GIBRALTAR等几个商业产品和 SmartInspect可以帮助进行日志管理和分析。

    关于.net - 记录日志的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3934685/

    相关文章:

    c# - 如何检查Redis channel 是否已通过StackExchange.Redis订阅?

    c# - 扩展方法和源代码的向前兼容性

    .net - 我应该使用哪个类来在字符串中进行多次替换?

    c# - 相等和赋值运算符

    mysql vb.net 已经有一个与此连接关联的打开的数据读取器

    c# - 触发 OnPropertyChanged 时更新其他属性

    c# - 如何在 Visual C# 中使用设置

    java - 从java调用系统命令来保存日志文件

    java - 使用 Spring-Boot 的 Logback 配置实时重新加载 (scan=true)

    java - 如何在通过 http 发送时从 log4j 日志中隐藏用户名和密码