仅在log4net中发送错误级别提供程序的电子邮件 [英] Send email for only Error level provider in log4net

查看:80
本文介绍了仅在log4net中发送错误级别提供程序的电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有一个asp.net网站.我已经为日志记录配置了log4net.我仅使用两个提供程序文件和SMTP.我想在文件中记录所有级别的级别,但是应该仅针对错误级别发送电子邮件.不想发送有关错误,信息,警告和致命信息的电子邮件.我在web.config文件中使用了以下配置.

Hi,

I have an asp.net site. I have configured the log4net for the logging. I am using only two provider File and SMTP. I want to log all type of level in the File, but email should be send only for the the Error level. Do not want to send an email for the ERROR, INFO, WARN and FATAL. I have used the following configuration in the web.config file.

<configSections>
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
	</configSections>
	<log4net>
		<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <threshold value="ALL" />
			<param name="File" value="D:\Log4NetWeb\LogFile.txt"/>
			<param name="AppendToFile" value="true"/>
			<layout type="log4net.Layout.PatternLayout">
				<param name="Header" value="[Header]\r\n"/>
				<param name="Footer" value="[Footer]\r\n"/>
				<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
			</layout>
		</appender>
		
    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
			<to value="maymailaddress@yahoo.com"/>
			<from value="ttext@test.com"/>
			<from value="text2@test.com"/>
			<!--<subject value="test logging message"/>-->
      <subject type="log4net.Util.PatternString" value="%property{log4net:HostName} Error: %appdomain" />
			<smtpHost value="SMTP.myserver.com"/>
			<bufferSize value="512"/>
      <lossy value="true"/>
      <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="Error"/>
      </evaluator>
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline"/>
			</layout>
		</appender>
		<root>
			<!--<level value="ALL"/>-->
			<appender-ref ref="SmtpAppender"/>
      <appender-ref ref="LogFileAppender"/>
		</root>

    <!--<logger name="File">
      <level value="All" />
      <appender-ref ref="LogFileAppender" />
    </logger>
    <logger name="SmtpAppender">
      <level value="ERROR" />
      <appender-ref ref="SmtpAppender" />
    </logger>-->

  </log4net>




并使用以下代码进行记录




and using the following code for the logging

protected void Page_Load(object sender, EventArgs e)
   {
       DOMConfigurator.Configure();

       try
       {
           int a = 0, b = 1;

           logger.Debug("Log Debug");
           logger.Info("Log info");
           logger.Warn("Log Warn");
           logger.Fatal("Log Fatal");


           float c = b/a;

       }
       catch (Exception ex)
       {
           logger.Error("some errro in the application ",ex);
       }

   }




但是我收到每个日志的电子邮件.如何仅为错误配置日志?这样我就只收到有关该错误的电子邮件.




However I am getting email for every log. How can I configure the log only for the ERROR? So that I will get email only for the ERROR.

推荐答案

<log4net>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
      <file value="log\log.txt" />
      <appendtofile value="true" />
      <datepattern value="yyyyMMdd" />
      <rollingstyle value="Date" />
      <level value="ALL" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionpattern value="%date [%thread] %-5level %logger [%property] - %message%newline"></conversionpattern>
      </layout>
    </appender>
    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net">
      <to value="to@email.com" />
      <from value="from@email.com" />
      <subject value="LOG4NET Email TESTING" />
      <smtphost value="Host Name" />
      <bufferSize value="1"/>
      <lossy value="true"/>
      <evaluator type="log4net.Core.LevelEvaluator,log4net">
        <threshold value="ERROR"/>
      </evaluator>
      <layout type="log4net.Layout.PatternLayout,log4net">
        <conversionpattern value="%property{log4net:HostName} :: %level :: %message %newlineLogger: %logger%newlineThread: %thread%newlineDate: %date%newlineNDC: %property{NDC}%newline%newline" />
      </layout>
    </appender>
    <root>
      <appender-ref ref="RollingFile" />
      <appender-ref ref="SmtpAppender" />
    </root>

  </log4net>


我不是log4net专家,但我相信您的问题是由于您设置了阈值="ALL".尝试设置阈值="ERROR".另外请看一下这篇文章: http://www.webonweboff.com/tips/asp/logging.aspx [ ^ ]
I am not a log4net expert, but I believe your problem is due to you having set threshold value="ALL". Try setting threshold value="ERROR". Also take a look at this article: http://www.webonweboff.com/tips/asp/logging.aspx[^]


这篇关于仅在log4net中发送错误级别提供程序的电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆