2010-11-04 272 views
13

我已使用Log4net记录了所有应用程序事务。有没有什么办法可以禁用和启用通用地点的日志记录,而无需更改为日志记录编写的代码。如何使用Log4net打开/关闭日志记录

+0

你的意思是像在app.config? – Mark 2010-11-04 05:45:42

+0

通过web.config – saknet 2010-11-04 07:28:50

回答

11

我假设你想通过代码在运行的应用程序中切换日志记录。我没有尝试,但我认为调用下面的方法应该禁用日志记录:

LogManager.GetRepository().ResetConfiguration(); 

要重新启用日志记录,你会打电话

XmlConfigurator.Configure(); 

(或的XmlConfigurator的其他方法) 。

但是似乎有一个issue反复调用Configure方法。我不知道这是否会对您造成问题,但至少我已经警告过您...

+0

+1与其他响应不同,这个关闭记录器保持打开的文件。 – 2014-05-08 19:34:50

+0

这帮了我... – Pritam 2017-03-01 11:51:25

11

您可以通过更改log4net配置文件关闭它们。具体将appender的级别或全局级别更改为“OFF”值。见here的细节

+0

日志级别是在记录器上定义的,而不是appender。 Appender可以使用级别过滤器。也可能是根记录器的级别为OFF,但是子记录器仍然记录一些内容。 – 2010-11-04 12:12:13

+0

是的,当然,但想法仍然通过配置文件,而不是代码。 – Kamarey 2010-11-04 14:50:49

+0

够公平的。这是我的印象,但这不是OP要求... – 2010-11-04 22:20:52

2

假设我明白你的问题,从常见问题:http://logging.apache.org/log4net/release/faq.html

如何完全禁用所有日志记录在运行?

将Hierarchy上的Threshold设置为Level OFF将禁用该层级的所有日志记录。这可以通过在log4net配置文件中将“threshold”属性设置为“OFF”来在log4net配置文件中完成。例如: