读取在Windows Azure上编写的应用程序日志

时间:2011-08-01 12:22:37

标签: windows azure

我有10个应用程序,它们具有相同的逻辑,可以在位于应用程序根文件夹上的文本文件中写入日志。 我有一个应用程序,它读取所有应用程序的日志文件,并在网页中显示详细信息。

在Windows Azure上可以实现相同的目标吗?我不想使用'DiagnosticMonitor'API。因为我无法改变应用程序的记录逻辑。

谢谢, 阿曼

3 个答案:

答案 0 :(得分:0)

即使在技术上这是可能的,但这是不可取的,因为Fabric Controller可以随心所欲地重新创建任何角色(很好 - 有充分的理由,但不可预测),所以每当发生这种情况你就会失败本地存储在角色上的任何文件。

所以 - 主要是你应该寻找一个不同的地方来存储这些日志,并且有很多选项,但都要求你改变应用程序的日志记录逻辑。

答案 1 :(得分:0)

可以这样做,但除了Yossi指出的问题(日志将是短暂的;它可能随时被删除),你会在每个角色上有一个不同的日志文件实例(VM)。这意味着当您点击您的网页查看日志时,您会看到该特定VM上的日志中发生的任何事情,而不是您可能想要的内容(在所有VM上汇总日志文件)。 / p>

Windows Azure诊断可以帮助,因为您可以将其配置为将日志文件复制到blob存储(因此无需更改日志记录)。但说实话,我觉得Diagnostics有点麻烦。它最终会创建许多不同的blob,你必须更改日志查看器才能读取所有这些blob并将它们组合起来。

我个人建议编写一段监视日志文件的单独代码,对于每个新行,将该行存储为表存储中的实体(行)。这段代码可以作为启动任务启动,只是作为一个单独的进程连续运行(保持其他所有内容不变)。然后修改日志查看器以从表存储中读取最后的 n 实体并显示它们。

(我假设您可以修改日志查看器,即使您无法修改登录该文件的应用程序。)

答案 2 :(得分:0)

如何将日志写入azure存储表?只需要定义唯一的ParitionKey / RowKey,就可以轻松检索网页的日志。