前言

 公司前几天重新确立了考核指标,主要是针对我们研发部,而我们的经理要求也高,对我们绩效考核扣分也挺狠的,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. gimp之旅

    随着大学生活的告一段落,新的征途已经开始了.鉴于本人如此喜欢旅游,如此喜欢拍照,如此喜欢处理图片,所以打算在照片处理上下点功夫.总所周知,图像处理软件大牛级的就属windows下的photoshop以 ...

  2. [Orchard CMS系列] 创建主题(Writing a new theme)

    本文需要对Orchard CMS有基本了解. 开启模块 code generation 创建新的主题工程骨架 Codegen theme MyTheme 创建主题样式 src\Orchard.Web\ ...

  3. Visual Studio 2015 编译错误【错误 C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. 】的解决方案

    错误提示信息: 错误 C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s inst ...

  4. hdu4435-charge-station(搜索+贪心)

    题意&题解: http://www.cnblogs.com/wuminye/p/3245546.html 说实话看了题解觉得很简单,但是比赛的时候真的是毫无头绪. 然而印象中做过一道类似的二进 ...

  5. Java 8 中 CAS 的增强

    几天前,我偶然地将之前写的用来测试AtomicInteger和synchronized的自增性能的代码跑了一下,意外地发现AtomicInteger的性能比synchronized更好了,经过一番原因 ...

  6. Android Studio 模拟器启动问题——黑屏 死机 解决方法

    今天用了下Android Studio,出现了一些问题,现在将启动过程中遇到的问题和解决方案列出来,方便大家参考. 安装过程不多说,网上一搜一大把. 那直接说问题吧: 1. 无法启动,报错:Faile ...

  7. msp430的两本书 电子版【worldsing笔记】

    msp430的两本书,pdf版 MSP430系列单片机接口_技术及系统设计实例 MSP430系列16位超低功耗单片机原理与应用 点击此处下载 ourdev_528863.pdf(文件大小:4.21M) ...

  8. hdoj 2829 Lawrence 四边形不等式优化dp

    dp[i][j]表示前i个,炸j条路,并且最后一个炸在i的后面时,一到i这一段的最小价值. dp[i][j]=min(dp[i][k]+w[k+1][i]) w[i][j]表示i到j这一段的价值. # ...

  9. CSS背景与列表

    CSS中背景的使用 CSS中列表的使用 15.1 CSS中背景的使用         属性名称                             属性值                      ...

  10. SpringMVC(三)

    今天是学习Spring的第四天,今天终于又把Spring+SpringMVC+Mybatis(SSM)高了一遍,这次运行的代码和配置和昨天的不一样,今天运行的很成功. 主要学习的一点就是我今天使用的是 ...