1

让我们从上下文开始!

在我的工作中,我被要求为我的项目添加一些日志功能,这是一个 ASP.NET 中的 Web 应用程序。

我想的很好,我可以只为我的项目做,但这不是很有用!所以我想创建一个可以在其他项目(webapps 或 windows 应用程序)中使用的 DLL。

所以我计划了这些功能:

  • 用于配置的 XML 文件:文件的日志级别、文件的位置、保存时间、写入新日志文件之前的最大大小。例如,我可以有一个日志文件,其中仅写入错误和关键日志,另一个文件将写入信息和警告日志。

    • 能够为 Web 应用程序或 Win 应用程序登录

但这里有问题,我正在考虑可能出错的不同事情,我想在开发它之前确定我做了什么。

首先,我必须检测它是 Web 应用程序还是 Windows 应用程序。我找到了一些有用的东西,比如这个

然后我在想日志怎么写,每次写一行日志,我都要打开和关闭我的文件。我觉得这是表演中非常贪婪的东西。我错了吗 ?还有其他方法吗?

还应该指出的是,从 Web 应用程序或多线程 Windows 应用程序登录时可能会出现问题。另一个问题是 log 方法可能一次被调用两次(2 次),这将产生同时访问 log 文件的问题。处理这些问题的最佳方法是什么?

最后,我想知道您是否看到任何其他可能对这种 dll 造成问题的事情?

谢谢你的帮助 !:)

4

2 回答 2

0

您可以尝试 ELMAH https://elmah.github.io/ 或 Serilog:https ://serilog.net/ 作为 log4net(可能小于 log4net),两者都是“经典”。正如之前的答案所说,除了可能是一种编码乐趣之外,重新发明轮子没有任何收获。

于 2017-01-04T16:08:10.233 回答
0

重新发明轮子是不值得的。你可以看看 log4net 库。Log4net 支持将日志写入 TXT、XML、SQL、MSMQ 等。我的建议是,写一堆日志会在一定程度上阻止您的应用程序执行。因此,我不会进行 TXT 或 SQL 日志记录,而是选择 MSMQ 日志记录(它会触发并忘记哪个不会阻止您的应用程序代码)。有一个 Windows 服务来读取消息队列并将日志写入单独的 SQL 数据库中。

于 2017-01-04T15:16:21.960 回答