首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用msmq进行异步日志记录

使用msmq进行异步日志记录
EN

Stack Overflow用户
提问于 2011-02-16 15:00:25
回答 3查看 4.3K关注 0票数 6

我需要在我们的应用程序中进行日志记录,并希望尽可能少地保留由于日志记录而消耗的时间。我正在考虑使用MSMQ,这样应用程序就可以登录到MSMQ,然后我就可以将来自MSMQ的消息异步记录到数据库/文件中。

这个想法在性能方面是好的吗?或者使用log4net同步记录到平面文件会更好。

此外,我正在考虑编写一个日志抽象层,这样以后我就可以插入任何日志工具,而不会影响其他代码。

请给我建议。

谢谢,sveerap

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-16 15:10:29

我建议不要这么做。对于一个并不真正存在的问题,这是一个不必要的复杂解决方案。我在多个项目中使用过log4net,从未见过任何明显的性能下降。

最好注意为每个日志消息(DEBUG、INFO、WARN等)选择正确的日志记录级别。当你开始你的项目时,也许在你投入生产的一小段时间内,你会记录从调试到更高级别的一切。当您确信一切正常时,您可以切换到配置中的信息。这应该足以解决您在日志记录方面可能遇到的任何性能问题。

关于您的抽象层,我也不会这么做。Log4net本身通过其记录器附加器抽象日志记录本身的所有细节。如果你真的想要这个,你可能还想看看Common.Logging

票数 6
EN

Stack Overflow用户

发布于 2011-05-13 21:31:07

对于它的价值,有一些情况下,这不是过度杀伤力。但是,对于大多数应用程序,我会说是这样的。

我工作的环境由几台z/OS大型机和各种*nix中端设备组成。这些系统都将日志记录消息写入到一个共享队列中,该队列将被处理。在组织上,发现它提供了更好的吞吐量,并确保了日志的一致性。

话虽如此,我可以看到在您的应用程序中使用这种方法的优势。例如,开发大量的内部应用程序,并拥有一个公共日志(例如,在数据库中-有一个进程来访问和读取队列,并将其写入数据库)将允许您聚合所有消息。

但是,您可能会发现log4net或其他.NET日志记录包将完美地满足您的需求。

两者都有优点,但正如其他人所说的那样-使用MSMQ进行日志记录(可能)就像用火箭筒追赶苍蝇一样。

票数 4
EN

Stack Overflow用户

发布于 2011-02-16 15:10:39

老实说,MSMQ在记录消息方面似乎有点过头了。除非您绝对需要可靠地传递日志消息,否则log4net似乎是一个完美的解决方案。还请记住,在MSMQ中创建消息可能比实际写入缓冲文件所需的时间更长。

您可能还想查看一下System.Diagnostics.Trace对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5013417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档