在 Web 应用项目的早期,我决定使用 Nlog 作为我的日志记录解决方案,并且非常喜欢在我的代码中调用记录器类,然后在运行时决定记录什么和在哪里记录的想法。然后我们决定这个应用程序应该以 Web 角色的形式托管在 Windows Azure 中,以利用所有这些优惠。现在,我意识到 Nlog 不会像我预想的那样工作。以下是变更引发的问题:
- 它无法记录到标准日志文件夹中的文本文件,因为这些文件夹是只读的,即使它们不是,它们也会依赖于实例而不是持久的,因为实例和实例本地存储的方式是已配置,将在回收时消失。
- 因为这些配置文件是只读的,所以我无法利用 Nlog 最强大的功能,即在运行时决定如何配置输出的能力。
我找到了一些解决登录位置问题的方法。将目标配置为记录到 Azure 诊断表或角色的表存储。虽然这可能是我们必须这样做的方式,但它似乎非常有限,因为您似乎只能登录到单个表(角色的诊断或自定义表)。有人知道更好的解决方案吗?记录到 AzureSQL 数据库的成本太高。
另外,如果我想临时登录到数据库或 SMS、电子邮件等,如果我无法编辑配置文件,我该如何配置 Nlog。我知道您可以将信息存储在 ServiceConfiguration.cscfg 文件中,并且可以在运行时访问和编辑它,但是 AFAIK,这不是 Nlog 配置的选项。有没有办法为所有实例编辑已部署的 web.cfg 或 Nlog 配置文件?
由于这些限制,是否最好放弃使用 Nlog,并使用不同的、更兼容的日志记录方法?