c# winform 如何记录日志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# winform 如何记录日志相关的知识,希望对你有一定的参考价值。

总不能每个方法里都有记录日志的 代码吧 能不能单独提取出一个模块来 怎么做

参考技术A //C#2.0
public class Form1 : Form

string user = "";
DateTime loginTime, logoutTime;

public Form1()

InitializeComponent();


private void button1_Click(object sender, EventArgs e)

if (textBox1.Text != "")

user = textBox1.Text;
loginTime = DateTime.Now;
MessageBox.Show("登陆成功");



private void Form1_FormClosed(object sender, FormClosedEventArgs e)

if (user != "")

logoutTime = DateTime.Now;
WriteLog();



private void WriteLog()

StreamWriter sw = new StreamWriter("C:\\log.txt", true);
sw.WriteLine(loginTime.ToString() + "\t" + logoutTime.ToString() + "\t" + user);
sw.Close();

这个可以记录windows的日志
参考技术B 这个好像提出来意义也太大!!顶多就是提个共共的方法!!传入 该模块干了什么事 的 Msg 因为每个模块的所干的事情是不一样的!! 你把它提出来就记录不了合各模块的分工了!! 如果要提高效率 可以在数据库写 触发器 监视每个操作!!! 参考技术C 这个好像提出来意义也太大!!顶多就是提个共共的方法!!传入 该模块干了什么事 的 Msg 因为每个模块的所干的事情是不一样的!! 你把它提出来就记录不了合各模块的分工了!! 如果要提高效率 可以在数据库写 触发器 监视每个操作!!!

哪个日志实用程序适用于 C#(ASP.NET、WinForms)中的 .NET 应用程序? [关闭]

【中文标题】哪个日志实用程序适用于 C#(ASP.NET、WinForms)中的 .NET 应用程序? [关闭]【英文标题】:Which log utility is good for .NET application in C# (ASP.NET, WinForms)? [closed] 【发布时间】:2011-01-07 15:08:12 【问题描述】:

我正在尝试评估一些可用于 .NET 框架的最佳日志实用程序,例如 Microsoft Enterprise Library、Log4Net、elmah。

已经完成此练习的人能否帮助我列出市场上最好的产品的优缺点。

感谢和问候, 拉吉夫·兰詹·拉尔

【问题讨论】:

您有任何特定的日志记录要求吗?因为你列出的所有这些都很棒 先搜索 Stack Overflow 怎么样? ***.com/questions/98080/…***.com/questions/147557/error-logging-in-c***.com/questions/185542/net-logging-framework 我还会使用 ELMAH 进行错误管理,使用 Serilog 记录其他所有内容。这是ELMAH Tutorial。另外,请查看 .NET Logging Tools and Libraries,其中包含实际维护的日志框架的概述。 【参考方案1】:

我使用过 Logstash (https://www.elastic.co/products/logstash),它非常好而且是开源的。

【讨论】:

【参考方案2】:

还没有看到这个,但是我发现内置的 System.Diagnostics TraceSource 和 TraceListeners 对于日志记录非常强大。我们为将日志保存到的不同数据源构建了许多高性能自定义 TraceListener。

我们一直在配置文件中交换不同的监听器。我们利用 System.Diagnostics.CorrelationManager 通过日志遍历许多服务器、进程和线程的执行链。

总而言之,我们在框架附带的基础上构建了一个复杂的日志记录解决方案,我对此非常满意。

【讨论】:

【参考方案3】:

log4net 用于 Windows 窗体,log4net 和 ELMAH 用于 ASP.NET。

ELMAH 和 log4net 有不同的用途。 ELMAH 捕获有关未处理异常的数据,而 log4net 提供可配置级别(INFO、WARN、DEBUG、FATAL)的日志框架。 log4net 要求您在代码中主动编写日志记录语句;正确配置后,ELMAH 会自动工作。

【讨论】:

【参考方案4】:

查看 Gibraltar 以获得出色的日志记录以及更多信息。

它有自己的日志 API,我们也有用于 log4net、NLog 和 Object Guy 的日志框架(PostSharp 也是!)的适配器。除了日志记录,Gibraltar 还收集 ELMAH 等错误,并收集对客户支持或 CEIP 有用的其他指标。

【讨论】:

【参考方案5】:

看看我的logging framework。使用方便。易于配置。易于扩展。

然后听听this guy says 的内容。

【讨论】:

【参考方案6】:

我也听说过关于NLog 的好消息,虽然我还没有测试过。他们说 API 类似于 log4net 提供的 API。

此外,通过 SO,您有很多与此问题相关的问题:

https://***.com/questions/98080/what-is-the-best-logging-solution-for-a-c-net-3-5-project

.NET logging framework

Error logging in C#

希望这会有所帮助。

【讨论】:

【参考方案7】:

一般来说,Log4net 比较好。

优点:Log4Net 支持许多输出源。缺点:有时会减慢您的应用程序。

对于 ASP.NET 应用程序是最好的ELMAH。

优点:您无需稍微更改应用程序代码即可使用 Elmah。你只需要包含在你的应用程序中。缺点:我不知道。

【讨论】:

Log4net 只是在实现方式和附加的类方面比较慢。 ELMAH +1。我已经使用 ELMAH 多年了,它很棒。大约一年前,我开始使用 ELMAH 手动记录非 Web 应用程序的错误。我不得不稍微更新代码以允许我将应用程序名称传递给它,但它运行良好。【参考方案8】:

我曾经使用自己的自定义、entlib、log4net,然后是 Elmah

对于 asp.net 错误报告,Elmah 领先于其他人。然而,我希望改进的几件事是过滤,也许是电子邮件的每日摘要,而不是每个错误一封电子邮件。

如果您想注入日志记录、警告、调试、跟踪等,那么我会选择 log4net。

但这取决于您所追求的日志记录类型...

【讨论】:

Rippo,请详细说明一下,因为我相信 RRL 会很感激它——它肯定也会对我们的公司项目有所帮助(我们正处于另一个手动编程解决方案的边缘)。额外的反馈可能会被证明是无价的。 您希望我详细说明哪一点? 关于 (iyho) 错误报告究竟是什么让 Elmah 在竞争中遥遥领先,它的工作方式是否有所不同?快点?更优雅?等等 你用过吗?没有那么我建议你看看,如果是那么也许你不需要问这个。如果您想进一步讨论这个问题,那么我建议您将这些差异作为一个新的 Stack Overflow 问题来提问。 HTH。【参考方案9】:

Enterprise Library 是我使用过的唯一正式版本,我们的团队发现它过于繁琐且缺乏黄金时段的多功能性。您可以安全地避免它,并且最终可能会更好地编写自己的解决方案。

我没有机会使用 Log4Net 或 Elmah。

【讨论】:

【参考方案10】:

elmah 是最好的。 elmah 摇滚!

【讨论】:

@this。 __curious_geek:elmah 也适用于 Windows 应用程序吗? 没有。 Elmah 使用特定的 ASP.NET 平台功能(处理程序)。 ELMAH 非常易于使用,并且在 Windows 应用程序中使用它也非常简单。唯一的缺点是你失去了它附带的漂亮的 HTTPModule,但幸运的是有一个 codeplex 项目可以帮助聚合这些。 aspexceptionreporter.codeplex.com

以上是关于c# winform 如何记录日志的主要内容,如果未能解决你的问题,请参考以下文章

c#写的winform生成EXE程序在有些电脑打不开,出现“程序已停止工作”的错误,错误日志如下:

C# winform中dataGridView控件如何插入、删除、更新记录,操作完成后怎样写回数并保存据库,怎么写代码?

C#里winform最大化时,如何使里面的控件按比例变化

C# WinForm中截获Console输出

Winform程序当运行exe 停止响应时 如何记录下日志?

C# winform程序运行几个小时后,程序未响应。如何排除这个问题?