我在让我的 SMTP appender 工作时遇到问题:
我有以下配置文件设置:
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="folder\\filelog.log"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="xxx@mail.com" />
<from value="xxx@mail.com" />
<subject value="Error in site" />
<smtpHost value="111.111.111.111" />
<authentication value="1"/>
<username Value="user@name.co.uk" />
<password value="password" />
<port value="25" />
<bufferSize value="1" />
<lossy value="false" />
<threshold value="ALL"/>
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ALL"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%property] - %message%newline%newline%newline" />
</layout>
</appender>
<logger name="File">
<level value="All" />
<appender-ref ref="LogFileAppender" />
</logger>
<logger name="EmailAppender">
<level value="ALL" />
<appender-ref ref="SmtpAppender" />
</logger>
我正在尝试记录错误以查看是否收到电子邮件:
log4net.Config.XmlConfigurator.Configure();
ILog logger = LogManager.GetLogger("EmailAppender");
logger.Error("uyyy: " + DateTime.Now.ToLongDateString());
电子邮件未送达。 如果我切换到"file",它会正确记录。
我知道我添加的凭据是正确的,因为我在系统的其他地方使用它们没有问题。
编辑:我尝试使用上面的“空白”配置运行,在继续之前运行 logger.Error 行需要一段时间。有了我的真实详细信息,它会立即运行,没有延迟。
最佳答案
来自 - http://logging.apache.org/log4net/release/sdk/log4net.Appender.SmtpAppender.html
“注意……身份验证和设置服务器端口仅在 MS .NET 1.1 运行时可用。要启用这些功能,您需要确保您使用的 log4net 程序集版本是针对MS .NET 1.1 框架,并且您正在 MS .NET 1.1 运行时上运行您的应用程序。在所有其他平台上,仅支持将未经身份验证的消息发送到监听端口 25(默认)的服务器。”
我不确定,但我认为这意味着任何构建在 .NET 1.1 之后的应用程序,身份验证将不起作用。您使用的是 1.1 还是更高版本?
关于xml - SMTP Appender - log4net 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456093/