我试图让Log4Net使用网络电子邮件,不管是雅虎还是Gmail。如果你有这方面的工作,我会感谢一些帮助,并感谢提前。
我有一个默认的根记录器,它有一个RollingFileAppender和一个SmtpAppender。文件附件工作正常。SmtpAppender什么也没给我。
我从诊断按钮点击呼叫记录器..。
protected void btnReloadContractConfig_Click(object sender, EventArgs e)
{
// DIAGNOSTIC - Test email logger
log4net.ILog logger = log4net.LogManager.GetLogger("root");
logger.Error("btnReloadContractConfig_Click() - This is a TEST of delivery of error messages via email, triggered from the Admin.aspx.cs code file.");
}...and RollingFileAppender收到了消息..。
LOC=20120921-12:03:16.319,UTC=20120921-11:03:16.319,DELTA=10078,THR=6,ERROR,LOG=root,(null) - btnReloadContractConfig_Click() -这是一个通过电子邮件传递错误消息的测试,从Admin.aspx.cs代码文件触发。
用于web.config的Log4Net条目如下:
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
<appSettings>
<log4net
xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="SmtpAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="MiniMkt01Log.txt"/>
<!-- <file value="${TMP}\log-file.txt" /> -->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout" >
<header value="[Header] " />
<conversionPattern value="LOC=%date{yyyyMMdd-HH:mm:ss.fff},UTC=%utcdate{yyyyMMdd-HH:mm:ss.fff},DELTA=%timestamp,THR=%thread,%-5level,LOG=%logger,[%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="FacelessDevTeam@yahoo.com" />
<from value="hiblet@yahoo.com" />
<subject value="Logging Message" />
<smtpHost value="smtp.yahoo.com" />
<port value="25"/>
<authentication value="Basic" />
<username value="FacelessDevTeam@yahoo.com"/>
<password value="?????[real password hidden for obvious reasons]"/>
<!-- <EnableSsl value="true" /> -->
<bufferSize value="10" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] " />
<!-- Previously... <conversionPattern value="%newline%date,%utcdate,%timestamp,[%thread],%-5level,%logger,[%property{NDC}] - %message%newline%newline%newline" /> -->
<conversionPattern value="%newlineLOC=%date{yyyyMMdd-HH:mm:ss.fff},UTC=%utcdate{yyyyMMdd-HH:mm:ss.fff},DELTA=%timestamp,THR=%thread,%-5level,LOG=%logger,[%property{NDC}] - %message%newline%newline%newline" />
</layout>
</appender>
</log4net>web.config是在Global.asax文件中,在Application_Start()处理程序中获取的.
void Application_Start(object sender, EventArgs e)
{
// Start Log4Net, signal app has started
log4net.Config.XmlConfigurator.Configure();
log4net.ILog logger = log4net.LogManager.GetLogger("root");
logger.Info("Application_Start()");
}触发电子邮件尝试的管理网页似乎是无限期挂起,或者暂时挂起(半秒)并继续。
dev环境没有异常崩溃,它不是挂起就是滑行,没有错误。
作为参考,我正在使用VS 2010,ASP.Net4和很多咖啡因。再次感谢任何即将到来的帮助。
发布于 2012-10-24 13:53:58
好吧,想清楚了,现在正在接收电子邮件。我在互联网上找不到很多解决方案,所以我不得不这样做。
我首先设置了一个小型控制台电子邮件程序,以验证我是否可以从我的机器发送基本的电子邮件。这要求您将配置SMTP客户端的部分添加到web.config (在本例中为app.config )。
当我开始工作时,我可以从独立应用程序中发送电子邮件,我将所需的部分复制到我的主项目的web.config文件中,然后,热狗就开始工作了。这里,仅仅是出于对我的人类同胞的纯粹的爱,是system.net部分,为我工作的Gmail.
<configuration>
[... your config stuff]
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="chunkyLover69@gmail.com">
<network
host="smtp.gmail.com"
enableSsl="true"
port="587"
userName="chunkyLover69@gmail.com"
password="yesThisIsMyRealPasswordIAmAnIdiot"
defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
[... some more of your config stuff]
</configuration>这就是关键所在,我的.config文件中没有.config部分,因此发生了史诗式的失败。希望这对将来的其他人有帮助。
发布于 2012-09-28 07:36:43
对于gmail,您必须将EnableSsl设置为true。您需要log4net版本1.2.11.0才能做到这一点。此外,出于测试目的,您可以将bufferSize设置为1,即每个日志都将被写入。
此外,出于测试目的,您可以尝试以编程方式配置log4net,例如:
public class TestingLog4Net
{
public void TestSmtpAppender()
{
ConfigureLog4NetSmtp();
var logger = GetLogger();
logger.Fatal(new Exception("Testing"));
}
private static ILog GetLogger()
{
var logger = LogManager.GetLogger(typeof (TestSmtpAppender));
return logger;
}
private static void ConfigureLog4NetSmtp()
{
var smtp = GetSmtpAppender();
BasicConfigurator.Configure(smtp);
}
private static SmtpAppender GetSmtpAppender()
{
var smtp = new SmtpAppender
{
Name = "GMail",
Username = "your_user_name",
Password = "your_password",
SmtpHost = "smtp.gmail.com",
From = "your_sender@gmail.com",
To = "some_target@mail.com",
EnableSsl = true,
Port = 587,
Authentication = SmtpAppender.SmtpAuthentication.Basic,
Subject = "Testing log4net SmtpAppender",
BufferSize = 1,
Lossy = true,
Evaluator = new LevelEvaluator(Level.Fatal),
Layout =
new PatternLayout(
"%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline")
};
return smtp;
}
}下载LinqPad最新的测试版。选择C#程序作为LinqPad查询,并将上述代码复制到查询中。使用您的gmail帐户,并设置一些目标电子邮件地址。这应该能行。
https://stackoverflow.com/questions/12530128
复制相似问题