我正在使用log4net。
当应用程序出现错误时,我只想为错误发送电子邮件。我该怎么做呢?
我的配置文件:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<appender name="SMTPAppender" type="log4net.Appender.SMTPAppender">
<authentication value="Basic" />
<to value="xxx@xxx" />
<from value="yyy@yyy" />
<username value="user" />
<password value="pass" />
<subject value="ERROR" />
<smtpHost value="host" />
<port value="25" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger %newline %message%newline%newline%newline" />
</layout>
</appender>
<root>
<level value="INFO"></level>
</root>
<logger name="SMTPAppender">
<level value="INFO"></level>
<appender-ref ref="SMTPAppender"></appender-ref>
</logger>
</log4net>
</configuration>我正在尝试在NUnit中测试:
[TestFixture]
public class TestClass
{
[Test]
public void Test()
{
ILog logger = LogManager.GetLogger(typeof(TestClass));
logger.Error("test mail");
}
}我可能做错了什么。
编辑:
<logger name="Yuartz.Tests.TestClass">
<level value="INFO"></level>
<appender-ref ref="SMTPAppender"></appender-ref>
</logger>namespace Yuartz.Tests
{
using log4net;
using log4net.Config;
[TestFixture]
public class TestClass
{
[Test]
public void Test()
{
XmlConfigurator.Configure();
var logger = LogManager.GetLogger("SMTPAppender");
logger.Error("test mail");
logger.Info("test mail");
}
}
}发布于 2012-06-20 15:39:43
在您的示例中,您将使用类型的全名(TestClass)来检索记录器。它将使用此名称来解析记录器或在未找到时创建一个新记录器。
ILog logger = LogManager.GetLogger(typeof(TestClass));如果希望此行代码返回SMTPAppender记录器,则需要在配置中将其重命名,如下所示:
<logger name="Yuartz.Tests.TestClass">
...
</logger>如果您不想更改配置,则需要按其实际名称检索记录器。下面返回名为"SMTPAppender“的记录器。
var logger = LogManager.GetLogger("SMTPAppender");我的建议是只需更改配置中的名称,并继续按类型检索记录器,就像您当前所做的那样。
还要确保您阅读了您的配置。
log4net.Config.XmlConfigurator.Configure();发布于 2012-06-20 15:47:16
在单元测试运行之前,您需要读取Log4Net配置。
请参阅本文How to use Log4Net in Unittests
发布于 2012-06-20 15:38:45
你在打电话给某个地方XmlConfigurator.Configure()吗?如果是这样的话,有时发送邮件会失败,因为反垃圾邮件会捕捉到它,所以如果在某个地方有标记为垃圾邮件的东西,请务必与系统管理员进行检查。
https://stackoverflow.com/questions/11114829
复制相似问题