Asp.net MVC 项目中使用Log4Net进行错误日志记录并发送邮件提醒

  • A+
所属分类:Log4Net

Asp.net MVC 项目中使用Log4Net进行错误日志记录并发送邮件提醒

安装Log4Net

  1. Install-Package Log4Net  

在Web项目根目录下创建log4net.config配置文件

  1. //配置文件log4new.config XML代码如下:  
  2. <?xml version="1.0" encoding="utf-8" ?>    
  3. <log4net debug="false">    
  4.   <appender name="LogFileAppender" type="log4net.Appender.FileAppender">    
  5.     <param name="File" value="Log/AT.log"/>    
  6.     <param name="datePattern" value="YY-MM-dd HH:mm"/>    
  7.     <param name="AppendToFile" value="true"/>    
  8.     <layout type="log4net.Layout.PatternLayout">    
  9.       <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>    
  10.     </layout>    
  11.   </appender>    
  12.   <appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender">    
  13.     <layout type="log4net.Layout.PatternLayout">    
  14.       <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>    
  15.     </layout>    
  16.   </appender>    
  17.   <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">    
  18.     <layout type="log4net.Layout.PatternLayout">    
  19.       <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>    
  20.     </layout>    
  21.   </appender>    
  22.   <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">    
  23.     <file value="log\AT"/>    
  24.     <appendToFile value="true"/>    
  25.     <rollingStyle value="Date"/>    
  26.     <datePattern value="_yyyyMMdd'.log'"/>    
  27.     <staticLogFileName value="false"/>    
  28.     <layout type="log4net.Layout.PatternLayout">    
  29.       <conversionPattern value="%d [%t] %-5p %c - %m%n"/>    
  30.     </layout>    
  31.   </appender>    
  32.   <root>    
  33.     <level value="INFO"/>    
  34.     <!--<level value="ERROR" />-->    
  35.     <appender-ref ref="RollingLogFileAppender"/>    
  36.   </root>    
  37. </log4net>    

项目中添加一个LogHelper.cs操作类

  1. //LogHelper.cs类代码如下:  
  2. using System;    
  3. using System.Collections.Generic;    
  4. using System.Linq;    
  5. using System.Web;    
  6.     
  7. [assembly: log4net.Config.XmlConfigurator(Watch = true)]    
  8. namespace CQICC.Models    
  9. {    
  10.     public class LogHelper    
  11.     {    
  12.         /// <summary>    
  13.         /// 输出日志到Log4Net    
  14.         /// </summary>    
  15.         /// <param name="t"></param>    
  16.         /// <param name="ex"></param>    
  17.         #region static void WriteLog(Type t, Exception ex)    
  18.     
  19.         public static void WriteLog(Type t, Exception ex)    
  20.         {    
  21.             log4net.ILog log = log4net.LogManager.GetLogger(t);    
  22.             log.Error("Error", ex);    
  23.         }    
  24.   
  25.         #endregion    
  26.     
  27.         /// <summary>    
  28.         /// 输出日志到Log4Net    
  29.         /// </summary>    
  30.         /// <param name="t"></param>    
  31.         /// <param name="msg"></param>    
  32.         #region static void WriteLog(Type t, string msg)    
  33.     
  34.         public static void WriteLog(Type t, string msg)    
  35.         {    
  36.             log4net.ILog log = log4net.LogManager.GetLogger(t);    
  37.             log.Error(msg);    
  38.         }    
  39.   
  40.         #endregion    
  41.     
  42.     }    
  43. }    

修改全局应用程序类Global.asax

  1. protected void Application_Start()  
  2. {  
  3.     AreaRegistration.RegisterAllAreas();  
  4.     RouteConfig.RegisterRoutes(RouteTable.Routes);  
  5.     //应用程序启动时,自动加载配置log4Net    
  6.     XmlConfigurator.Configure();  
  7. }  

打开Web.config文件,添加如下配置信息

  1. //配置文件代码如下:  
  2. <configuration>      
  3.   <configSections>    
  4.     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>    
  5.   </configSections>    
  6.   <log4net configSource="log4net.config"/>    
  7.   <system.web>    
  8.     <httpModules>    
  9.       <!--重写IHttpModule类,需要配置的信息-->    
  10.     </httpModules>    
  11.     <compilation debug="true" targetFramework="4.0" />    
  12.   </system.web>    
  13. </configuration>    

项目中添加一个SendMail.cs操作类

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net.Mail;  
  5. using System.Text;  
  6. using System.Web;  
  7.   
  8. namespace CQICC.Models  
  9. {  
  10. public class SendMail  
  11. {  
  12.     /// <summary>  
  13.     /// 发送邮件  
  14.     /// </summary>  
  15.     /// <param name="mailTo">要发送的邮箱</param>  
  16.     /// <param name="mailSubject">邮箱主题</param>  
  17.     /// <param name="mailContent">邮箱内容</param>  
  18.     /// <returns>返回发送邮箱的结果</returns>  
  19.     public static bool SendEmail(string mailTo, string mailSubject, string mailContent)  
  20.     {  
  21.         // 设置发送方的邮件信息,例如使用网易的smtp  
  22.         string smtpServer = "smtp.ym.163.com"//SMTP服务器  
  23.         string mailFrom = "error@163.com"//登陆用户名  
  24.         string userPassword = "******";//登陆密码  
  25.   
  26.         // 邮件服务设置  
  27.         SmtpClient smtpClient = new SmtpClient();  
  28.         smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式  
  29.         smtpClient.Host = smtpServer; //指定SMTP服务器  
  30.         smtpClient.Credentials = new System.Net.NetworkCredential(mailFrom, userPassword);//用户名和密码  
  31.   
  32.         // 发送邮件设置          
  33.         MailMessage mailMessage = new MailMessage(mailFrom, mailTo); // 发送人和收件人  
  34.         mailMessage.Subject = mailSubject;//主题  
  35.         mailMessage.Body = mailContent;//内容  
  36.         mailMessage.BodyEncoding = Encoding.UTF8;//正文编码  
  37.         mailMessage.IsBodyHtml = true;//设置为HTML格式  
  38.         mailMessage.Priority = MailPriority.Low;//优先级  
  39.   
  40.         try  
  41.         {  
  42.             smtpClient.Send(mailMessage); // 发送邮件  
  43.             return true;  
  44.         }  
  45.         catch (SmtpException ex)  
  46.         {  
  47.             return false;  
  48.         }  
  49.     }  
  50. }  
  51. }  

Controller调用

  1. try {   
  2. //try  
  3. }  
  4. catch (Exception e)  
  5. {  
  6.     //记录错误日志  
  7.     LogHelper.WriteLog(typeof(XXXController), e);  
  8.     //发送错误日志到Email  
  9.     SendMail.SendEmail("error@163com"typeof(XXXController) + "程序异常反馈"typeof(XXXController) + "\n" + "错误信息:" + e);  
  10. }  
钰玺

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • 我赚啦 我赚啦 1

      抱着学习的态度来看看