Azure云服务+ log4net。如何在不重新部署的情况下更改log4net配置

时间:2016-06-29 21:23:20

标签: azure log4net

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

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

2 个答案:

答案 0 :(得分:1)

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

如果你的实例必须被azure删除以在操作系统上进行更新,那么由于使用您最初创建的上传包(在RDP和配置修改之前)恢复实例,您将丢失配置中的更改。这是Web应用程序中更容易实现的一个巨大场景。

对于log4net,我已经看到了一些方法(虽然我还没有亲自实现):

  1. 在启动时从blob存储中获取运行时log4net的配置。这将允许您的实例从外部获取配置。因此,您可以在blob存储中放置所需的更改并重新启动服务,以使其获取最新信息。
  2. 使用应用程序中cscfg文件中的设置,并在运行时以动态方式构建log4net。这将允许您更改azure门户中的设置,然后将更改推送到您的Cloud Service实例。
  3. 两者都要求您或多或少地编写一些将在运行时动态配置log4net的代码。如果您搜索"动态更改log4net配置"你应该找到一些接近你需要做的事情。

答案 1 :(得分:0)

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

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