Asp.net log4net中SmtpAppender的时间计算器不';不能为web项目工作

Asp.net log4net中SmtpAppender的时间计算器不';不能为web项目工作,asp.net,log4net,log4net-configuration,log4net-appender,Asp.net,Log4net,Log4net Configuration,Log4net Appender,我有一个ASP.NET web应用程序,它使用log4net登录到各种Appender。我已经成功地添加了一个带有的SmtpAppender,并且可以通过它发送电子邮件;但是,如果我将其替换为a,则无法发送电子邮件 我的带有LevelEvaluator的appender如下所示(正在工作): 我已经检查了log4net的内部调试,它说它可以正常加载 如果有任何帮助,我将不胜感激。TimeEvaluator在ASP.NET web环境中是否已损坏?我无法重现此问题。你确定你看到的不是预期的行为吗?

我有一个ASP.NET web应用程序,它使用log4net登录到各种Appender。我已经成功地添加了一个带有的
SmtpAppender
,并且可以通过它发送电子邮件;但是,如果我将其替换为a,则无法发送电子邮件

我的带有
LevelEvaluator
的appender如下所示(正在工作):

我已经检查了log4net的内部调试,它说它可以正常加载


如果有任何帮助,我将不胜感激。
TimeEvaluator
在ASP.NET web环境中是否已损坏?

我无法重现此问题。你确定你看到的不是预期的行为吗?TimeEvaluator最多每秒钟允许事件通过一次。您根本没有日志事件?如果你也登录到一个文件,它会记录任何东西吗?@samy-我在根级别有一个自定义的回退追加器(记录到SQL,如果SQL失败,则记录到文件),与
SmtpAppender
一起。这工作正常-因此,如果我记录一个错误事件,我会在数据库中看到它,但在使用
TimeEvaluator
时不会收到电子邮件。如
LevelEvaluator所述,这很好。我想知道时间限制是否对ASP.NET站点不起作用。值得一提的是,我们用来记录日志的类是一个定制的泛型类(它被设计为能够使用不同的日志库)。它在应用程序级别实例化,在这种情况下,它最终拥有log4net类实例的私有属性-该私有属性在父类实例化且未更改时实例化,因此,我不相信日志对象在每次网页调用时都会被重新初始化——它会在应用程序级别持续存在
<appender name="EmailErrorAppender" type="log4net.Appender.SmtpAppender">
    <to value="to@myemail" />
    <from value="from@myemail" />
    <subject value="Alert Subject" />
    <smtpHost value="mymailhost" />
    <bufferSize value="50" />
    <lossy value="true" />
    <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="FATAL" />
    </filter>
    <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="ERROR"/>
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger%newline%newline" />
    </layout>
</appender>
<appender name="EmailErrorAppender" type="log4net.Appender.SmtpAppender">
    <to value="to@myemail" />
    <from value="from@myemail" />
    <subject value="Alert Subject" />
    <smtpHost value="mymailhost" />
    <bufferSize value="50" />
    <lossy value="true" />
    <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="FATAL" />
    </filter>
    <evaluator type="log4net.Core.TimeEvaluator">
        <interval value="30"/>
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger%newline%newline" />
    </layout>
</appender>