smtpAppender的动态配置属性
本文关键字:属性 配置 动态 smtpAppender | 更新日期: 2023-09-27 18:14:26
我使用log4net向我的应用程序用户发送邮件。我必须有动态的结构来做它。所以我尝试使用GlobalContext。属性,但它不工作!
这是我的原始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");
效果很好。但是,我试图将其中一个属性替换为动态的-它不起作用,消息没有发送。
在appender: <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该属性使用"模式字符串":
<to type="log4net.Util.PatternString" value="%property{emailTo}" />
来自文档:
该字符串具有嵌入的模式,当字符串被格式化。