在网络应用程序项目的早期,我决定使用Nlog作为我的日志记录解决方案,并且非常喜欢在我的代码中调用记录器类,然后在运行时决定记录的内容和位置。然后我们决定将此应用程序托管在Web角色的Windows Azure中,以利用所有这些优惠。现在,我意识到Nlog不会像我设想的那样工作。以下是变更提出的问题:
我找到了一些解决问题的解决方案。配置目标以记录Azure诊断表或角色的表存储。虽然这可能是我们必须这样做的方式,但它似乎非常有限,因为看起来您只能登录到单个表(该角色的诊断或自定义表)。有人知道更好的解决方案吗?登录AzureSQL数据库太昂贵了。
另外,如果我不想编辑配置文件,如果我想临时登录数据库或短信,电子邮件等,我怎么能配置Nlog。我知道您可以在ServiceConfiguration.cscfg文件中存储信息,并且它在运行时可以访问和编辑,但是AFAIK,这不是Nlog配置的选项。有没有办法为所有实例编辑已部署的web.cfg或Nlog配置文件?
由于存在这些限制,最好使用Nlog进行废弃,并使用不同的,更兼容的日志记录方法吗?
答案 0 :(得分:2)
理查德,
对于第一个问题,您可以设置本地存储资源来存储日志文件。您可以将本地资源配置为不清除角色重新启动,这有助于您的日志存活足够长时间以便有用。
我不认为将日志记录配置存储在.cscfg文件中是一种好方法,除非您有一个允许您一次更新所有配置的管理解决方案。更好的方法是将配置文件放在blob存储中,然后让进程检查blob是否已更改。如果有,请下载该文件并使用它。
埃里克
答案 1 :(得分:1)
我知道这是一个老问题,但我会放弃我的两分钱。
我们正在使用logentries.com服务来保存我们的日志。免费套餐可将您的数据保留一周,这对我们来说足够长。我们确实将logger的配置保存在单独的日志文件中,但我们从未在部署时更改记录器配置文件。
就在今天,我偶然发现了允许您在.cscfg中存储nlog配置文件的项目。我自己还没试过,但是我会为我的新项目试一试。这是链接:NLog.Config.Azure