我有一个c#程序,它在log appender和smtp appender上都记录了log4net。
我想始终保留日志文件,但在我的c#代码的程序结束时,我想决定是否必须发送电子邮件。
通常的级别或文本过滤器在这里没有帮助,因为在程序运行时我记录了很多可能有趣或不重要的东西,我知道这只是在过程结束时。
是否可以"阻止"代码的smtp appender?
答案 0 :(得分:1)
您需要将appender上的Threshold属性设置为OFF以禁用日志记录,否则将其设置为所需的值,如下所示:
private static void SetEmailLogging(bool enabled)
{
// Assuming there aren't more than 1 SmtpAppenders
var appender = log4net.LogManager.GetRepository()
.GetAppenders()
.OfType<SmtpAppender>()
.SingleOrDefault();
if (appender == null)
{
return;
}
// Set the level you want.
appender.Threshold = enabled ? Level.All : Level.Off;
appender.ActivateOptions();
}