首页 > 代码库 > 使用Log4Net发送日志邮件 (转载)
使用Log4Net发送日志邮件 (转载)
前言
公司前几天重新确立了考核指标,主要是针对我们研发部,而我们的经理要求也高,对我们绩效考核扣分也挺狠的,100分的,出了几个严重bug就变 0分,反正只要被用户发现并且提出来了,就会扣分,没被用户发现自己解决了不追究,还没听说有人写的程序能不出bug,为了能及时的知道出现bug,所以 我在记录错误日志的时候就将错误信息通过邮件发给自己,现在手机微信这么方便,来了邮件就能收到,都是考核惹的祸啊!
正题
log4Net想必很多人都知道,从java的log4j演变而来,开源的,可以到这里下载http://logging.apache.org/log4net/download_log4net.cgi
当然,现在项目中对log4net添加引用,通常都放在公共设施层。
在项目中建个log4net.config的配置文件
1 <?xml version="1.0"?> 2 <configuration> 3 <configSections> 4 <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> 5 </configSections> 6 <log4net> 7 <!--根据logger获取ILog对象--> 8 <logger name="logger"> 9 <!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->10 <!--如果没有定义LEVEL的值,则缺省为DEBUG-->11 <level value="ALL" />12 <appender-ref ref="LogSmtpAppender" />13 <appender-ref ref="LogFileAppender" />14 </logger>15 16 <!--定义输出到文件中-->17 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">18 <!--定义文件存放位置-->19 <file value="Log/Log.txt" />20 <appendToFile value="true" />21 <rollingStyle value="Date" />22 <datePattern value="yyyyMMdd-HH:mm:ss" />23 <layout type="log4net.Layout.PatternLayout">24 <!--输出格式-->25 <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />26 </layout>27 </appender>28 <!--定义邮件发送-->29 <appender name="LogSmtpAppender" type="log4net.Appender.SmtpAppender">30 <authentication value="Basic" />31 <to value="接受邮件的邮箱" />32 <from value="发送邮件的邮箱" />33 <username value="发送邮件的邮箱" />34 <password value="发送邮件的密码" />35 <subject value="XXX应用错误日志消息" />36 <smtpHost value="smtp.exmail.qq.com" />37 <bufferSize value="2048" />38 <!--超长部分是否丢弃-->39 <lossy value="http://www.mamicode.com/true" />40 <!-- 下面的定义, 就是 日志级别 大于 WARN 的, 才发邮件. -->41 <evaluator type="log4net.Core.LevelEvaluator">42 <threshold value="http://www.mamicode.com/ERROR"/>43 </evaluator>44 <!-- 下面是 定义邮件的格式 (好多换行啊) -->45 <layout type="log4net.Layout.PatternLayout">46 <conversionPattern value="http://www.mamicode.com/%property{log4net:HostName} :: %level :: %message %newlineLogger: %logger%newlineThread: %thread%newlineDate: %date%newlineNDC: %property{NDC}%newline%newline" />47 </layout>48 </appender>49 50 </log4net>51 </configuration>
以上配置的是记事本记录错误日志后邮件发送错误日志,邮件发送错误日志需要接受邮件和发送邮件,多个邮箱接受的话以“,”分割接受邮件(以上使用腾讯的企业游戏发送的,如果是其他邮箱,需要修改smtpHost的值)
配置好了开始使用,先在AssemblyInfo.cs这个里面加上这句
1 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
新建个Log类,负责处理错误日志
1 public class Log 2 { 3 private static log4net.ILog log = log4net.LogManager.GetLogger("logger"); 4 5 public static void Debug(string message) 6 { 7 if (log.IsDebugEnabled) 8 { 9 log.Debug(message);10 }11 }12 13 public static void Debug(System.Exception ex1)14 {15 if (log.IsDebugEnabled)16 {17 log.Debug(ex1.Message.ToString() + "/r/n" + ex1.Source.ToString() + "/r/n" + ex1.TargetSite.ToString() + "/r/n" + ex1.StackTrace.ToString());18 }19 }20 21 public static void Error(string message)22 {23 if (log.IsErrorEnabled)24 {25 log.Error(message);26 }27 }28 29 public static void Fatal(string message)30 {31 32 if (log.IsFatalEnabled)33 {34 log.Fatal(message);35 }36 }37 38 public static void Info(string message)39 {40 if (log.IsInfoEnabled)41 {42 log.Info(message);43 }44 }45 46 public static void Warn(string message)47 {48 if (log.IsWarnEnabled)49 {50 log.Warn(message);51 }52 }53 }
调用的时候,在各类方法的try{}catch{}的代码块里直接通过Log调用静态方法就可以了
测试看看结果:
在网站的目录里会有个Log文件夹,里面有个Log.txt文件
邮件接受的:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。