2009-12-10 56 views
0

我正在开发一个对时间要求严格的ASMX web服务,我正在使用自己的类和静态方法将行写入共享日志文件。日志记录不会被锁/监视器保护,因为应用程序写入日志相当多。我不知道如果一个线程被调度出来,而在静态方法中写入一行并且另一个线程被调度也会写入,会发生什么。现在我问什么是实现日志记录的最佳方式?如何在多线程ASP.NET web应用程序(asmx web服务)中实现日志记录

谢谢你 - 马蒂

+0

这将取决于您使用的.NET和Windows的版本。你正在使用哪些版本? – 2009-12-10 20:31:36

回答

0

我同意@AdaTheDev。使用log4net,您可以创建一个客户Appender(将记录的消息传送到某个目的地的部分,例如文件,电子邮件,事件日志等)。该appender可以将日志消息写入MSMQ。

然后,您可以有一个小组件读取队列(单线程)并将消息写入日志文件。这意味着要记录一条消息,只需要渲染日志消息并将其写入队列即可。将消息写入文件的行为将是单线程的,并且与ASP.NET的关键业务代码完全分离。

0

编号建议使用像log4net的第三方解决方案或NLOG代替自己TBH做,节省重新发明轮子

0

我们选择的实现方法是使用微软企业库记录块,然后我们有一个类有一些简化的静态方法设置,我们称之为实际将日志消息写入日志文件。我们在我们的多线程环境中没有任何问题。

相关问题