多个进程写入单个日志文件

时间:2009-03-10 11:16:09

标签: windows iis logging

这是一个轻量级的通用解决方案,尽管目前问题是IIS CGI应用程序需要记录事件的时间轴(第二个分辨率),以便在以后的请求最终在MySQL数据库中结束的情况下进行故障排除早先的要求!

因此,归结为单个文本文件中的日志记录调试语句。

我可以按照此主题中的建议编写一个管理队列的服务: Issue writing to single file in Web service in .NET 但是在每台机器上部署服务是一件痛苦的事情

或者我可以使用全局互斥锁,但这需要每个实例为每次写入打开和关闭文件

或者我可以使用一个可以为我处理这个问题的数据库,但是使用像MySQL这样的数据库试图解决自己的时间线问题是没有意义的。 SQLite是另一种可能性,但这个线程

http://www.perlmonks.org/?node_id=672403

表明它也不是一个好选择。

我真的在寻找一种简单的方法,就像为每个流程写入单个文件并将其与预定的应用程序进行合作一样简单。我不想过度设计这个,也不想用一个星期来实现它。它只是偶尔需要。

建议?

5 个答案:

答案 0 :(得分:4)

首先尝试最简单的解决方案 - 每次写入日志都会打开并关闭文件。如果您遇到此问题,您可能不会遇到问题,请寻找其他解决方案。

答案 1 :(得分:3)

您可以使用文件锁定。锁定文件进行写入,编写消息,解锁。

答案 2 :(得分:1)

我的建议是保持性能,然后在异步日志记录中思考。为什么不使用UDP将数据日志信息发送到服务侦听端口并写入日志文件。

答案 3 :(得分:1)

我还建议使用某种中央记录器,每个进程都可以异步方式调用它。如果通信是UDP或RPC或任何实现细节。

答案 4 :(得分:0)

即使认为这是一篇老帖子,也有人知道为什么不使用以下概念:

  1. 创建/打开共享模式为FILE_SHARE_WRITE的文件。
  2. 拥有一个已命名的全局互斥锁,并将其打开。
  3. 每当需要写入文件时,首先锁定互斥锁,然后写入文件。
  4. 任何输入?