前言

 公司前几天重新确立了考核指标,主要是针对我们研发部,而我们的经理要求也高,对我们绩效考核扣分也挺狠的,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="true" />
40 <!-- 下面的定义, 就是 日志级别 大于 WARN 的, 才发邮件. -->
41 <evaluator type="log4net.Core.LevelEvaluator">
42 <threshold value="ERROR"/>
43 </evaluator>
44 <!-- 下面是 定义邮件的格式 (好多换行啊) -->
45 <layout type="log4net.Layout.PatternLayout">
46 <conversionPattern value="%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文件

邮件接受的:

使用Log4Net发送日志邮件 (转载)的更多相关文章

  1. Log4j发送日志邮件功能

    昨天配置了log4j发送错误日志的功能,很实用,记录一下! Log4j可以实现输出到控制台,文件,回滚文件,发送日志邮件,数据库,自定义标签.例如: log4j.rootLogger=DEBUG, I ...

  2. 使用Common.Logging+log4net规范日志管理【转载】

    使用Common.Logging+log4net规范日志管理   Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大 ...

  3. log4net详解(转载)

    1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual S ...

  4. Log4net创建日志及简单扩展

    转:http://blog.csdn.net/CHENFEIYANG2009/article/details/5397342 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log ...

  5. 使用Log4net创建日志及简单扩展

    如何使用Log4net创建日志及简单扩展 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的 ...

  6. 5分钟 wamp下php phpmaile发送qq邮件 2015最新方法说明

    13:40 2015/11/20 5分钟 wamp下php phpmaile发送qq邮件 2015最新方法说明 关键点:现在qq邮箱开通smtp服务后会给你一个很长的独立新密码,发邮件配置中的密码需要 ...

  7. (一)使用log4net生成日志文件

    1.引入log4net.dll 1.1 Nuget安装 或 http://logging.apache.org/log4net/下载log4net的源代码,编译后把log4net.dll引入项目. 2 ...

  8. SQL Server Alert发送告警邮件少了的原因

    最近突然发现我们部署在数据库上面的告警(Alert),当错误日志里面出现错误时,并不是每个错误日志都会发送邮件出来.如下所示,设置了告警"SQL Server Severity Event ...

  9. node.js爬取数据并定时发送HTML邮件

    node.js是前端程序员不可不学的一个框架,我们可以通过它来爬取数据.发送邮件.存取数据等等.下面我们通过koa2框架简单的只有一个小爬虫并使用定时任务来发送小邮件! 首先我们先来看一下效果图 差不 ...

随机推荐

  1. MapReduce计算模型

    MapReduce计算模型 MapReduce两个重要角色:JobTracker和TaskTracker. ​ MapReduce Job 每个任务初始化一个Job,没个Job划分为两个阶段:Map和 ...

  2. HDU-4647 Another Graph Game 贪心,博弈

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4647 注意这题两人的决策是想要使得自己的分数与对方的差值最大.. 注意到数据范围,显然是贪心之类的,如 ...

  3. nyoj 448 寻找最大数

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  4. js常用方法:

    1.将 "\/Date(1313572554031)\/" 转化为 “yyyy-MM-dd hh:mm:ss”字符串格式: //测试 var str = "\/Date( ...

  5. 刚制作完的SAP Sybase ASE15.7 [Sybase Central] 客户端

    支持32位和64位windows系统.无需其它任何包.原汁原味. 支持的数据库版本,应该从15.0开始都支持. 下载地址: http://download.csdn.net/detail/iihero ...

  6. AdapterView及其子类之二:使用ListActivity及ArrayAdapter创建列表

    见归档项目ListActivityDemo.zip. 基本步骤如下: 1.创建一个TextView,用于指定每一个ListView的格式 <?xml version="1.0" ...

  7. 从经典问题来看 Copy 方法(转)

    来自:Gua | 瓜地 链接:https://desgard.com/copy/  在初学 iOS 的时候,可能会被灌输这么一个常识,切记 NSString 的 property 的修饰变量要写作 c ...

  8. C++ 过载,重写,隐藏

    1.过载:在一个类中(也就是一个作用域),方法名相同,形参表不同的方法. 2.重写:父类方法使用virtual,子类方法和方法的方法名,形参表,返回类型相同,子类可以不使用virtual,但是建议使用 ...

  9. hdu 5441 Travel 离线带权并查集

    Travel Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5441 De ...

  10. Android蓝牙操作笔记

    蓝牙是一种支持设备短距离传输数据的无线技术.android在2.0以后提供了这方面的支持. 从查找蓝牙设备到能够相互通信要经过几个基本步骤(本机做为服务器): 1.设置权限 在manifest中配置 ...