用于WebEmail的Log4Net SmtpAppender - 不发送

Ste*_*ert 8 log4net smtpappender

我正在努力让Log4Net使用Yahoo或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.");
}
Run Code Online (Sandbox Code Playgroud)

...而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代码文件触发.

Log4Net的web.config条目在这里::

  <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]&#13;&#10;" />
    <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]&#13;&#10;" />
    <!-- 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>
Run Code Online (Sandbox Code Playgroud)

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()");
}
Run Code Online (Sandbox Code Playgroud)

触发电子邮件尝试的管理员网页似乎无限期挂起,或暂时挂起(半秒)并继续.
开发环境不会因异常而崩溃,它可以挂起或滑动而不会出错.

  • 如何从SmtpAppender中获取其他诊断信息?
  • 我可以独立测试端口/配置以检查传出的程序化电子邮件上的本地块吗?
  • 是否保证发送log4net电子邮件?有损和bufferSize属性似乎非常敏感,如果我把lossy = false,我得到一个无限期挂起......

作为参考,我使用的是VS 2010,ASP.Net4和大量的咖啡因.再次感谢任何即将到来的帮助.

Ste*_*ert 13

好了,想通了,现在正在接收电子邮件.我在互联网上找不到很多解决方案,所以这就是我必须要做的.

我首先设置了一个小型的控制台电子邮件程序来验证我可以从我的机器上发送基本的电子邮件.这要求您在配置SMTP客户端的web.config(或本例中为app.config)中添加一个部分.

当我开始工作,并且我可以从独立应用程序发送电子邮件时,我将所需的部分复制到我的主项目的web.config文件中,而且,hot-diggity-dog,它可以工作.在这里,只是出于对我的同胞们的纯爱,是使用Gmail为我工作的system.net部分...

<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>
Run Code Online (Sandbox Code Playgroud)

所以那是关键,我的.config文件中没有system.net部分,因此史诗失败.希望这有助于将来的其他人.

  • 你可以在这里发布你的log4net设置的SmtpAppender吗?好奇我需要什么组合. (2认同)