首页 文章

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

提问于
浏览
3

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

  • 它可以't log to a text file in a standard log folder, because the folders are read-only, and even if they weren' t,它们是实例依赖的而不是持久的,因为实例和实例本地存储的配置方式会在循环时消失 .

  • 因为这些配置文件是只读的,所以我无法利用Nlog最强大的功能,即能够在运行时决定如何配置输出 .

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

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

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

2 回答

  • 1

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

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

    就在今天,我会为我的新项目付出代价 . 这是链接:NLog.Config.Azure

  • 2

    理查德,

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

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

    埃里克

相关问题