【问题标题】:Logging Errors in Windows forms application在 Windows 窗体应用程序中记录错误
【发布时间】:2011-08-09 01:04:36
【问题描述】:

我有一个 Windows Forms NET 应用程序,它在不是我的开发机器的机器上出现间歇性行为。我需要在执行的各个阶段记录一些内部变量,以查看哪里出了问题。 (我也认为记录其他行为是个好主意,所以如果在测试中遗漏了一些错误,可以知道该领域发生了什么)我发现了一些附加的东西,但不仅如此看起来有点过头了,我想我想改用 NET 框架内置的东西。根据我的阅读,这意味着使用跟踪?使用跟踪(我可以找到)创建日志文件的所有示例都适用于控制台应用程序。有没有人有创建日志文件并在执行期间写入/记录 vars 状态到日志文件的 Windows 窗体示例?我确实找到了一个记录到系统日志的示例,但这对我来说似乎是个坏主意,即使对于 beta 版本也是如此。如果我从有困难的用户那里得到一个日志文件,我只想查看我的东西而不是该机器上的所有东西,加上从系统管理员的角度来看,我不希望应用程序在我的脑海中弄乱系统日志是为操作系统而不是应用程序进行转储的地方。

【问题讨论】:

    标签: c# .net winforms error-handling error-logging


    【解决方案1】:

    鉴于您已经说过您希望在框架中内置一些东西,这可能不是您想听到的,但我发现 log4net 工作得很好。如果它是您看过的“矫枉过正”的框架之一,我不会感到惊讶。另一种选择,也是更受 Microsoft 认可的选择,是 Microsoft Enterprise Library——您会对 Logging 框架感兴趣。 (资料here,下载链接here。)

    【讨论】:

    • 我在这里找到了一个示例dotnetexpertsforum.com/…,它只是在应用程序目录中打开了一个文件。
    • 我实现它就像这样命名空间 MY_Logger { public class Logger { public static string ts = DateTime.Now.ToString("yyyyMMdd-HHmmss", CultureInfo.InvariantCulture);公共静态字符串 appdata_folder = System.Windows.Forms.Application.StartupPath.ToString();公共静态 StreamWriter 日志文件 = File.AppendText(String.Format(@"{0}\Sample_Log_{1}.log", appdata_folder, ts)); public Logger() { logfile.WriteLine("用户登录成功"); } } }
    • 我这样使用 Logger.logfile.WriteLine("刚得到串口名称"); Logger.logfile.WriteLine(myPortNames[i - 1]); Logger.logfile.WriteLine("排序后"); Logger.logfile.WriteLine(myPortNames[i - 1]);
    • 这当然有效。确保您的日志记录代码不会引入新的异常。例如,确保您处理因无权打开文件等导致的异常。
    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2010-09-11
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多