记录多个Web服务器

时间:2009-09-30 17:22:03

标签: asp.net logging log4net

我想知道人们如何处理跨多个Web服务器的日志记录。例如。假设有2个Web服务器,用户会话期间的一些事件由一个服务器提供服务,一些服务器从另一个服务器服务。你如何在一个地方连贯地记录会话中的事件(没有例如创建单点故障)?假设我们正在使用:ASP.Net MVC,log4net。

或者我是以错误的方式看待这个 - 我应该单独记录然后再合并吗?

谢谢,

取值

更新

还请假设负载均衡器不保证会话卡在一台服务器上。

4 个答案:

答案 0 :(得分:2)

您肯定希望您的Web服务器在本地而不是通过网络进行登录。您不希望潜在的网络中断阻止日志记录操作,并且您不希望网络操作的开销用于日志记录。您应该设置日志轮换并且所有Web服务器时钟都已同步。当日志轮换将日志文件转到新文件时,请将每个Web服务器中已完成的日志文件发送到可以合并它们的公共目标。我不是.net的人,但你应该能够找到那里的软件来合并IIS日志(或者你正在使用的任何网络服务器)。然后分析合并的日志。除了需要实时日志分析的情况外,此策略是最佳策略。你呢?可能不是。它对故障具有相当的弹性(假设您有冗余磁盘),因为如果服务器出现故障,您可以重新启动它并重新处理任何已中断的日志,日志合并或日志分析操作。

答案 1 :(得分:2)

一个有趣的解决方案替代方案:

  • 有2个日志文件追加器

  • 本地机器中的第一个 如果网络出现故障,您将保留此日志。

  • 第二次远程登录到unix syslog服务(当然 一个非常一致的网络连接)

我很久以前就采用了类似的方法,而且效果非常好 很多用于分析unix日志的好工具。

答案 2 :(得分:0)

通常,您的负载平衡会在会话启动后将用户锁定到一台服务器。然后,您不必处理分布在多个服务器上的特定用户的日志。

答案 3 :(得分:0)

您可以尝试的一件事是将日志文件放在所有Web服务器都可以访问的位置,并将log4net配置为写入它。但是,这可能是有问题的,因为多个进程试图写入同一文件。我已经阅读了NLog,这可能会在这种情况下更好。

此外,log4net常见问题解答对此确切问题有question and possible solution