gpt4 book ai didi

c# - 如何在不依赖于客户端应用程序或 web.config 的 dll 中使用 log4net?

转载 作者:行者123 更新时间:2023-11-30 14:34:34 28 4
gpt4 key购买 nike

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

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

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

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

最好的方法是什么?

最佳答案

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

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

实现您想要的操作的一种方法是向该配置方法传递存储在 Azure 存储中的配置文件的公共(public) URL。配置文件的位置可以通过服务配置进行控制。

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

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

关于c# - 如何在不依赖于客户端应用程序或 web.config 的 dll 中使用 log4net?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13861054/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com