Log4net:如何在运行时启用调试日志记录?
Log4net: How to enable debug logging at runtime?
在测试环境中,启用了调试日志,因此我可以看到详细的调试日志消息。在生产环境中,我想默认禁用调试日志,但如果需要,仍然想 enable/disable 它。
我可以在运行时启用调试日志而不重新启动我的应用程序吗?我的日志记录代码如下所示:
if(logger.IsDebugEnabled) Logger.Debug("debug message");
您可以通过设置更改为日志级别,然后应用新设置:
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Level = Level.Debug;
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).RaiseConfigurationChanged(EventArgs.Empty);
通常的做法是让 log4net 监视 app.config 或配置文件的更改。
例如使用属性
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
或
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(logConfigFilename));
并且可以配置默认配置以设置注销。
然后对配置文件的任何更改将立即生效,无需重新启动程序。
在测试环境中,启用了调试日志,因此我可以看到详细的调试日志消息。在生产环境中,我想默认禁用调试日志,但如果需要,仍然想 enable/disable 它。
我可以在运行时启用调试日志而不重新启动我的应用程序吗?我的日志记录代码如下所示:
if(logger.IsDebugEnabled) Logger.Debug("debug message");
您可以通过设置更改为日志级别,然后应用新设置:
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Level = Level.Debug;
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).RaiseConfigurationChanged(EventArgs.Empty);
通常的做法是让 log4net 监视 app.config 或配置文件的更改。
例如使用属性
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
或
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(logConfigFilename));
并且可以配置默认配置以设置注销。
然后对配置文件的任何更改将立即生效,无需重新启动程序。