【问题标题】:Azure cloud service + log4net. How to change log4net config without redeployAzure 云服务 + log4net。如何在不重新部署的情况下更改 log4net 配置
【发布时间】:2016-06-29 21:23:19
【问题描述】:

我有一个非常标准的云服务(1 个网络角色 + 1 个工作角色)。 我使用 log4net 作为日志框架,它工作正常。 log4net 的优点之一是您可以动态更改配置。例如将日志记录级别从 Info 更改为 Debug。 但这依赖于您更新服务器上的日志记录配置文件——这是您在云服务中无法做到的。

有人解决过这个问题吗?有没有一种方法、一种技术、一种最佳实践来设置您的 log4net 配置,以便您可以即时更新它而无需重新部署整个包?

【问题讨论】:

标签: azure log4net


【解决方案1】:

快速回答是您可以 RDP 到实例并在那里更改配置文件。虽然这不是你的长期解决方案。

如果您的实例必须被 azure 删除才能在操作系统上进行更新,您将丢失配置中的这些更改,因为使用您最初创建的上传包(预 RDP 和配置修改)恢复实例。这是一个巨大的场景,在 Web 应用程序中要容易得多。

对于 log4net,我已经看到了几种方法(虽然我也没有亲自实现过):

  1. 在启动时从 blob 存储中获取运行时 log4net 的配置。这将允许您的实例从外部获取配置。因此,您只需将所需的更改放入 Blob 存储中,然后重新启动服务以获取最新的。
  2. 在应用程序中使用 cscfg 文件中的设置并在运行时动态构建 log4net。这将允许您更改 azure 门户中的设置,然后将更改推送到您的云服务实例。

两者都要求您或多或少地编写一些代码,以便在运行时动态配置 log4net。如果您搜索“动态更改 log4net 配置”,您应该会找到接近您需要做的事情。

【讨论】:

  • 谢谢杰森。关于 RDP:你自己做过吗?我尝试过,但运气不佳。可能是因为它是一个工人角色。我必须重新启动实例才能重新读取配置,并且该过程中有一些东西会重置对我所做的配置的更改。关于您的其他建议:也感谢您的建议。我以前见过这样的事情。它们对我来说似乎不是很……优雅。但这可能是唯一的选择
  • 是的,我经常远程访问一些云服务。试试这篇文章,你可能需要启用它:azure.microsoft.com/en-us/documentation/articles/…
【解决方案2】:

您可以使用 Visual Studio 2015 中的 Cloud Explorer 远程编辑您的 Web 应用程序的 Web.config 文件以更改您的 log4net 配置。

请注意,如果您未在上游提交更改,您的更改将在下次重新部署时被覆盖。

【讨论】:

    猜你喜欢
    • 2017-07-04
    • 2014-12-15
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多