3

我希望能够动态控制基于 Azure 云的应用程序执行的日志记录级别。为此,我正在创建一个基于 log4net 的共享 DLL。

关于 log4net 日志记录有很多问题,但几乎所有问题都涉及在配置文件或其他文本文件中输入和操作设置。在 Azure 云中,更改 web.config 意味着重新部署。我想通过从管理门户向应用程序调用 Web 服务来更改日志记录。

我还有几个应用程序,我希望每个应用程序都使用我新的基于 log4net 的 DLL,而不必在每个配置文件中存储相同的设置,例如 Appender 详细信息。应用程序记录相同的、一致的数据。

我不想使用 Azure 诊断,因为这会降低这个大型用户群应用程序的性能。此外,我想将日志记录和诊断减少到最低限度(或完全禁用),并且只在各个级别启用它们以调试生产问题或拍摄它们的性能快照。我不想重新部署我的应用程序。

最好的方法是什么?

4

2 回答 2

7

我建议不要将 log4net 配置存储在 web/app.config 文件中,而是存储在可以从外部更新的不同文件中(即:在 blob 存储中),其位置可以从服务配置中动态更改,或者其内容可以是无需重新部署即可更改。

查看 log4net.Config.XmlConfigurator.Configure 方法。您可以向它传递许多不同的参数,而不是只在没有参数的情况下调用它(无参数默认方法从 app.config 文件中读取)。

一种方法是向该 Configure 方法传递存储在 Azure 存储中的配置文件的公共 URL。配置文件的位置可以从服务配置中控制。

或者,如果您不想公开配置文件,您可以从存储中的某个私有位置实现您自己的 XML 配置阅读器,并将 XML 文档传递给 Configure() 方法。

在此处查看更多信息:http: //logging.apache.org/log4net/release/manual/configuration.html

于 2012-12-13T15:24:11.387 回答
-1

我可以想到两种方法:

使用 Web Deploy,它只更新服务器上的文件,而无需执行完整的部署过程。

在您的 Azure 实例上启用 RDP,只需登录并就地更改配置文件,就像任何其他服务器一样

于 2012-12-13T13:46:26.927 回答