smtpAppender 的 Log4net- 动态配置属性
Log4net- dynamic configuration properties for smtpAppender
我使用 log4net 向我的应用程序用户发送邮件。
我必须为此进行动态配置。
所以我尝试为此使用 GlobalContext.Properties,但它不起作用!
这是我的原始 appender 代码:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="myAddress@myComp.com" />
<from value="myAddress@myComp.com" />
<subject value="test logging message" />
<smtpHost value="out.bezeqint.net" />
<username value="myUserName" />
<password value="myPassword />
<authentication value="Basic" />
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %newline%newline - %message%newline" />
</layout>
</appender>
在 c#:
ILog emailLog = log4net.LogManager.GetLogger("EmailLogger");
log4net.Config.XmlConfigurator.Configure(emailLog.Logger.Repository);
emailLog.Error("test aaa");
效果很好。
但是,我尝试将其中一个属性替换为动态属性 - 但它不起作用,消息尚未发送。
在追加器上:
<to value="%property{emailTo}" />
在 C# 中:
log4net.GlobalContext.Properties["emailTo"] = "myAddress@myComp.com";
ILog emailLog = log4net.LogManager.GetLogger("EmailLogger");
log4net.Config.XmlConfigurator.Configure(emailLog.Logger.Repository);
emailLog.Error("test aaa");
你必须告诉 log4net 属性 使用 "pattern string":
<to type="log4net.Util.PatternString" value="%property{emailTo}" />
This string has embedded patterns that are resolved and expanded when
the string is formatted.
我使用 log4net 向我的应用程序用户发送邮件。 我必须为此进行动态配置。 所以我尝试为此使用 GlobalContext.Properties,但它不起作用!
这是我的原始 appender 代码:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="myAddress@myComp.com" />
<from value="myAddress@myComp.com" />
<subject value="test logging message" />
<smtpHost value="out.bezeqint.net" />
<username value="myUserName" />
<password value="myPassword />
<authentication value="Basic" />
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %newline%newline - %message%newline" />
</layout>
</appender>
在 c#:
ILog emailLog = log4net.LogManager.GetLogger("EmailLogger");
log4net.Config.XmlConfigurator.Configure(emailLog.Logger.Repository);
emailLog.Error("test aaa");
效果很好。 但是,我尝试将其中一个属性替换为动态属性 - 但它不起作用,消息尚未发送。
在追加器上:
<to value="%property{emailTo}" />
在 C# 中:
log4net.GlobalContext.Properties["emailTo"] = "myAddress@myComp.com";
ILog emailLog = log4net.LogManager.GetLogger("EmailLogger");
log4net.Config.XmlConfigurator.Configure(emailLog.Logger.Repository);
emailLog.Error("test aaa");
你必须告诉 log4net 属性 使用 "pattern string":
<to type="log4net.Util.PatternString" value="%property{emailTo}" />
This string has embedded patterns that are resolved and expanded when the string is formatted.