Web角色日志记录 - Nlog - 访问配置文件

时间:2013-02-15 22:17:21

标签: logging azure nlog azure-web-roles

在网络应用程序项目的早期,我决定使用Nlog作为我的日志记录解决方案,并且非常喜欢在我的代码中调用记录器类,然后在运行时决定记录的内容和位置。然后我们决定将此应用程序托管在Web角色的Windows Azure中,以利用所有这些优惠。现在,我意识到Nlog不会像我设想的那样工作。以下是变更提出的问题:

  • 它无法登录到标准日志文件夹中的文本文件,因为这些文件夹是只读的,即使它们不是,它们也是实例相关的而不是持久的,因为实例和实例的方式本地存储已经配置,并将在回收时消失。
  • 因为这些配置文件是只读的,所以我无法利用Nlog最强大的功能,即能够在运行时决定如何配置输出。

我找到了一些解决问题的解决方案。配置目标以记录Azure诊断表或角色的表存储。虽然这可能是我们必须这样做的方式,但它似乎非常有限,因为看起来您只能登录到单个表(该角色的诊断或自定义表)。有人知道更好的解决方案吗?登录AzureSQL数据库太昂贵了。

另外,如果我不想编辑配置文件,如果我想临时登录数据库或短信,电子邮件等,我怎么能配置Nlog。我知道您可以在ServiceConfiguration.cscfg文件中存储信息,并且它在运行时可以访问和编辑,但是AFAIK,这不是Nlog配置的选项。有没有办法为所有实例编辑已部署的web.cfg或Nlog配置文件?

由于存在这些限制,最好使用Nlog进行废弃,并使用不同的,更兼容的日志记录方法吗?

2 个答案:

答案 0 :(得分:2)

理查德,

对于第一个问题,您可以设置本地存储资源来存储日志文件。您可以将本地资源配置为不清除角色重新启动,这有助于您的日志存活足够长时间以便有用。

我不认为将日志记录配置存储在.cscfg文件中是一种好方法,除非您有一个允许您一次更新所有配置的管理解决方案。更好的方法是将配置文件放在blob存储中,然后让进程检查blob是否已更改。如果有,请下载该文件并使用它。

埃里克

答案 1 :(得分:1)

我知道这是一个老问题,但我会放弃我的两分钱。

我们正在使用logentries.com服务来保存我们的日志。免费套餐可将您的数据保留一周,这对我们来说足够长。我们确实将logger的配置保存在单独的日志文件中,但我们从未在部署时更改记录器配置文件。

就在今天,我偶然发现了允许您在.cscfg中存储nlog配置文件的项目。我自己还没试过,但是我会为我的新项目试一试。这是链接:NLog.Config.Azure