【问题标题】:SMTP Appender - log4net issueSMTP Appender - log4net 问题
【发布时间】:2011-09-21 07:34:42
【问题描述】:

我的 SMTP 附加程序无法正常工作:

我有以下配置文件设置:

<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());

电子邮件未到达。 如果我切换到“文件”,它会正确记录。

我知道我添加的凭据是正确的,因为我在系统的其他地方使用它们没有问题。

编辑:我尝试使用上面的“空白”配置运行,并且在继续之前运行 logger.Error 行需要一段时间。有了我的真实细节,它立即运行,没有延迟。

【问题讨论】:

    标签: xml logging configuration web-config log4net


    【解决方案1】:

    来自 - 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 还是更高版本?

    【讨论】:

    • 我在 dotNet 4.5 上进行了测试,效果很好。即使仍在网站上,此说明似乎也已过时。有人吗?
    【解决方案2】:

    将此添加到配置部分的末尾

        <appSettings>
             <add key="log4net.Internal.Debug" value="true"/>
        </appSettings>
    

    您将能够跟踪错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多