前言

 公司前几天重新确立了考核指标,主要是针对我们研发部,而我们的经理要求也高,对我们绩效考核扣分也挺狠的,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. C语言简短程序gcc编译过程

    一.建立一个×.c源文件.这里起名:rocks.c 二.编辑源代码,在c源文件内输入如下代码: #include <stdio.h> int main() { puts("C R ...

  2. ubuntu下PHP支持cURL

    公司项目需要,注册需要验证手机号码,其中需要LAMP支持cURL.由于事先安装平台的时候,并没有注意到这一点,所以编译PHP5的时候,并没有使用参数--with-curl.后来需要的时候,查一些参考方 ...

  3. hdu 2715 Herd Sums

    Herd Sums Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. 【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现

    批处理是使GPU进行高效绘制的一种技术手段,也是整个渲染流程中最核心的技术,到目前为止我们并没有使用到这种技术手段,下面我们看看我们现在的渲染机制. 先想一想我们最开始是怎么向GPU绘制一幅图像的,可 ...

  5. Egret的第一个2048游戏

    http://bbs.egret-labs.org/thread-242-1-1.html 对于AS3的开发者来说,可以直接过渡到的HTML5框架就是Egret了,基本上是了解了TypeSprite的 ...

  6. 知方可补不足~SQL数据库用户的克隆,SQL集群的用户同步问题

    我们知道在为sqlserver建立功能数据库时,通过会为库再建立一个登陆名,而这个登陆名时,只用来管理这个数据库,这是安全的,正确的.

  7. Windows 环境下基于 nginx 的本地 PyPI 源

    Windows 环境下基于 nginx 的本地 PyPI 源的搭建: 1.登录 nginx 官网,下载安装包

  8. xcode6 升级到xcode7 产生的问题

    当初作为第一个吃螃蟹的人,第一天就把xcode升级到了xcode7,结果报了一堆错,网上也没有解决方案,于是果断退到xcode6.这两天看时机成熟,升到了xcode7,在升级后,会有许多问题,在此罗列 ...

  9. 跟Android初学者分享几点经验

    刚学Android开发的人肯定想知道过来人是怎样入门的,有哪些经验,怎样能少走弯路.本文就跟大家分享一位Android开发者的入门经验,写的条理很清晰,真正讲出了自己的学习过程,尽管每个人的学习方法和 ...

  10. [Bootstrap] 4. Typogrphy

    What is Typography When we talk about typography, it's a big subject! Which of the following fall un ...