1

作为将旧应用程序从 VB6 升级到 .Net 3.5 的一部分,我们一直在办公室讨论如何最好地处理日志记录。旧系统使用本地日志文件,其路径包含在注册表中(默认情况下不应该指定)。我们大多数人现在都倾向于使用 Windows 应用程序事件日志,但是有一个人提出了一个问题,让我们死了。

负载平衡意味着一个用户的会话可能在不同的点由不同的应用服务器提供服务的 Citrix 等环境呢?我们突然间可能有来自多个服务器的会话的信息片段(或者我们相信 - 我们大多数人以前没有处理过这个问题,所以我们不是 100% 确定)这使得支持人员很难在支持呼叫期间拼凑事件链。普遍的共识似乎是我们应该使用 MS 企业库日志记录功能,并为每个安装设置一个中央日志存储库。

除了使用企业库的集中式日志之外,任何人都可以推荐一种最佳实践或明智的方法来在多个环境(包括应用服务器场)中记录应用程序日志,还是我们已经走上了正确的轨道?

干杯

4

4 回答 4

2

在 Citrix 场中,每个会话(登录前)执行负载平衡。单个会话不能在服务器之间移动。后者顺便说一句是基于服务器的计算的“圣杯”——如果你弄清楚了,告诉 Citrix 怎么做,他们会感兴趣的 ;-)

这应该会让你更简单。在所有 Windows 环境中,会话始终位于相同的物理虚拟机上。有了这些信息,记录到事件日志再次成为一种选择。

于 2010-11-23T19:56:23.223 回答
1

通常我都在为桌面应用程序和服务使用内置的 Windows 日志记录功能。然而,这提出了一个有趣的问题。

我认为通过利用 Enterprise Library 并集中您的日志存储,您会得到更好的服务。

于 2010-11-23T17:47:43.090 回答
1

我们使用自定义 TraceListener 类将日志写入集中式数据库。

于 2010-11-23T17:49:20.017 回答
1

即使是事件日志也可以在您的情况下工作 - 您只需包含活动 ID 和/或会话 ID 之类的内容。有了这个,您将能够关联应用程序日志的所有部分。

记录到中央数据库会有所帮助,因为所有部分都可以放在一个地方。但是,您仍然应该研究 Activity ID 的使用。

请参阅CorrelationManager类。

于 2010-11-23T17:51:31.937 回答