获得统一日志记录的简洁方法是什么?

时间:2013-09-24 08:46:13

标签: asp.net azure nlog

这是记录问题。

有一个asp.net网站。该网站的主要功能是电子邮件列表(保存在数据库中)。每次出现错误时,nlog都会将数据保存到文件中。该网站有一个管理面板。管理面板列表会读取网站的错误日志。

有一名工人。工作人员连接到Exchange Server,它会检查具有匹配主题的电子邮件。匹配模式的电子邮件将保存到数据库中。每次出现错误时,nlog都会将数据保存到其他文件中。

网站和工作人员都使用相同的记录器类。网站的web.config和worker的application.config中的设置只指向不同的目标文件。

这是新功能。管理员面板也应该列出工人的错误。现在,我有多种方法可以解决这个问题。

选项1:网站将确定工作日志文件的位置,然后它将读取工作日志文件。

选项2:建立一个新的工人/政党。这将处理网站和工作人员的日志记录。它可以在单个日志中保存这两组错误,甚至可以在数据库中保存新表。

选项3:将网站和工作文件配置为指向同一目标文件,但是,我不知道azure文件系统的目录结构。

最干净的方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以做的是使用Windows Azure诊断程序的自定义日志功能。让您的Web角色和辅助角色使用NLog写入不同或相同的目标。这些文件将保存在每个VM的本地存储上。然后使用Windows Azure诊断程序,定期将这些文件传输到Windows Azure Blob存储,并让第3个工作人员角色定期处理这些blob。

在这里查看Cloud Service Fundamentals项目:http://code.msdn.microsoft.com/windowsazure/Cloud-Service-Fundamentals-4ca72649。它是由Windows Azure CAT团队完成的。它利用NLog收集日志数据,然后将该日志数据保存在名为telemetry-logs的容器中。一旦数据在该容器中,它就会定期轮询数据并将其推送到SQL Azure数据库中。

答案 1 :(得分:1)

将nlog条目发送到数据库而不是本地文件 https://github.com/nlog/NLog/wiki/Database-target
如果您有太多条目,只需将FATAL或ERROR发送到数据库。