前言

 公司前几天重新确立了考核指标,主要是针对我们研发部,而我们的经理要求也高,对我们绩效考核扣分也挺狠的,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. 如何利用多核CPU来加速你的Linux命令

    原文出处: rankfocus   译文出处: 外刊IT评论 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能 ...

  2. 关于 Java 对象序列化您不知道的 5 件事

    数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处. 关于本系列 您觉得自己懂 Java 编程?事实上,大多数 ...

  3. 转载Entity Framework全面教程

    转载原地址:http://www.cnblogs.com/lsxqw2004/archive/2009/05/31/1495240.html#_Toc228672754 预备知识    2 LINQ技 ...

  4. iOS 应用数据存储的常用方式

    iOS 开发中,经常会有将数据存储到本地的需求.比如一些数据的缓存,或者记录下用户的账号密码,记录下下次是否自动登录等,这些都需要将数据记录到本地.iOS中,数据存储到本地的常见方式有三种: 一: 使 ...

  5. st_MES_InsertIntoSalaryManage

    USE [ChiefmesNew]GO/****** Object: StoredProcedure [dbo].[st_MES_InsertIntoSalaryManage] Script Date ...

  6. C#公历转农历算法

    C#公历转农历算法,高手们也可以改写一下让其更加有效率! Code/// <summary> /// LunDay 的摘要说明. /// 用法说明 /// 直接调用即可,比较简单 /// ...

  7. Fixed theorems

    Banach Schauder Bourbaki-Kneser

  8. eclipse 护眼色

    eclipse windows 窗口背景颜色 保护视力 博客分类: 工具使用 EclipseWindows  eclipse  窗口背景颜色 windows 窗口背景颜色

  9. 远程重启IIS服务

    方法一: $UserName = "administrator" $serverpass = "pass" $server = "10.4.19.60 ...

  10. 2014 ACM/ICPC 鞍山赛区现场赛 D&amp;I 解题报告

    鞍山现场赛结束了呢-- 我们出的是D+E+I三道题-- 吾辈AC掉的是D和I两道,趁着还记得.先在这里写一写我写的两道水题D&I的解题报告吧^_^. D题的意思呢是说星云内有一堆排成一条直线的 ...