Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging Web角色日志记录-Nlog-访问配置文件_Logging_Azure_Nlog_Azure Web Roles - Fatal编程技术网

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

Logging Web角色日志记录-Nlog-访问配置文件,logging,azure,nlog,azure-web-roles,Logging,Azure,Nlog,Azure Web Roles,在一个web应用项目的早期,我决定使用Nlog作为我的日志解决方案,并且非常喜欢这样的想法,即在我的代码中只调用一个logger类,然后在运行时决定记录什么以及记录在哪里。然后,我们决定将此应用程序以Web角色托管在Windows Azure中,以充分利用所有这些功能。现在,我意识到Nlog不会像我想象的那样工作。以下是变更引起的问题: 它无法登录到标准日志文件夹中的文本文件,因为这些文件夹是只读的,即使不是只读的,它们也会依赖于实例,不会持久,因为实例和实例本地存储的配置方式会导致这些文件夹

在一个web应用项目的早期,我决定使用Nlog作为我的日志解决方案,并且非常喜欢这样的想法,即在我的代码中只调用一个logger类,然后在运行时决定记录什么以及记录在哪里。然后,我们决定将此应用程序以Web角色托管在Windows Azure中,以充分利用所有这些功能。现在,我意识到Nlog不会像我想象的那样工作。以下是变更引起的问题:

  • 它无法登录到标准日志文件夹中的文本文件,因为这些文件夹是只读的,即使不是只读的,它们也会依赖于实例,不会持久,因为实例和实例本地存储的配置方式会导致这些文件夹在回收时消失
  • 因为这些配置文件是只读的,所以我无法利用Nlog最强大的功能,即在运行时决定如何配置输出的能力
我找到了一些解决在哪里登录的方法。将目标配置为登录到Azure Diagnostics表或角色的表存储。虽然这可能是我们必须这样做的方式,但它似乎非常有限,因为您似乎只能登录到单个表(角色的诊断或自定义表)。有人知道更好的解决方案吗?登录到AzureSQL数据库的成本太高

此外,如果我想临时登录到数据库或SMS、电子邮件等,如果我无法编辑配置文件,如何配置Nlog。我知道您可以将信息存储在ServiceConfiguration.cscfg文件中,并且在运行时可以访问和编辑该文件,但恕我直言,这不是Nlog配置的选项。是否有方法为所有实例编辑已部署的web.cfg或Nlog配置文件

由于这些限制,是否最好放弃使用Nlog,并使用不同的、更兼容的日志记录方法?

Richard

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

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


埃里克

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

我们正在使用该服务来保存日志。免费层将您的数据保留一周,这对我们来说已经足够长了。我们将记录器的配置保存在单独的日志文件中,但在部署时,我们从不需要更改记录器配置文件


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

+1…感谢您的回复!我们使用了我最初的问题中提到的一种表存储解决方案。我们的一个手下找到了自定义代码。一点也不理想,但我们必须继续前进,但希望找到更好的解决方案(希望MS能看到这里的问题,并在平台上制定一个整体解决方案)。+1。。。谢谢你的回复!看起来很有趣。必须让老板相信他们可以信任我们的日志数据。我看过您提到的配置项目,但我们选择使用静态配置登录到表存储,如果需要更改(这还没有发生),我们将重新发布该静态配置,并且还没有超出此范围。我希望微软能看到这种需要,并创造出一个全面的解决方案(祈祷吧!)。不幸的是,我现在不能选择一个“被接受”的答案,但如果我们决定接受你的建议,我会的。