使用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="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发送日志邮件 (转载)

时间: 2024-08-01 14:16:59

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

Log4net创建日志及简单扩展

1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段.2.一个简单的使用实例 第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0. 第二步:程序启动时读取log4net的配置文件. 如果是CS程序,在根目录的Program.cs中的Main

log4net详解(转载)

1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段. 2.一个简单的使用实例 第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0. 第二步:程序启动时读取log4net的配置文件. 如果是CS程序,在根目录的Program.cs中的Mai

使用Zabbix服务端本地邮箱账号发送报警邮件的部署记录

邮件报警有两种情况:1)Zabbix服务端只是单纯的发送报警邮件到指定邮箱,发送报警邮件的这个邮箱账号是Zabbix服务端的本地邮箱账号(例如:[email protected]),只能发送,不能接收外部邮件.2)使用一个可以在互联网上正常收发邮件的邮箱账号(例如:[email protected]),通过在Zabbix服务端中设置,使其能够发送报警邮件到指定邮箱.上面第2中使用外部邮箱发送报警邮件之前已经介绍了:分布式监控系统Zabbix-3.0.3-完整安装记录(5)-邮件报警部署.下面说下

C# 使用系统方法发送异步邮件

项目背景: 最近在对几年前的一个项目进行重构,发现发送邮件功能需要一定的时间来处理,而由于发送是同步的因此导致在发送邮件时无法执行后续的操作 实际上发送邮件后只需要将发送结果写入系统日志即可对其他业务没有任何影响,因此决定将发送邮件操作更改为异步的 由于使用的是C#的邮件类库,而C#本身已经提供了异步发送的功能即只需要将Send方法更改为SendAsync即可,更改方法名并不难但发送后再写入日志就有点难了 因为项目中发送邮件是单独的组件,所以我不可能在发送邮件类库中直接添加写入日志操作(不在同一

Django 发送html邮件

转载于: http://blog.sina.com.cn/s/blog_76e94d2101011bxd.html django中发送html邮件: #mailer.py # -*- coding: utf-8 -*- from django.core.mail import EmailMessage from django.template import loader from settings import EMAIL_HOST_USER   #项目配置邮件地址,请参考发送普通邮件部分 de

在命令行上 Ubuntu 下使用 mutt 和 msmtp 发送 Gmail 邮件

在命令行写email from ubuntu 参考:      http://www.habadog.com/2011/11/23/send-mail-with-msmtp-mutt-linux      http://www.absolutelytech.com/2010/07/17/howto-configure-msmtp-to-work-with-gmail-on-linux msmtp 是一款专门负责邮件发送的客户端软件,基于GPL发布,支持TLS/SSL.DNS模式.IPv6.服务器

java 实现注册时发送激活邮件+激活

在很多网站注册的时候,为了验证用户信息的真实合法,往往需要验证用户所填邮件的准确性.形式为:用户注册时填写邮箱,注册完成后,网站会向用户所填邮箱发送一封激活邮件,用户点击激活邮件中的链接后,方可完成注册. 最近项目中也用到这个需求,做了个Demo与大家分享,大至思想如下: 数据库表结构 用户表t_user有五个字段分别为用户名.密码.邮箱地址.激活码.状态: | username | password | email |code | state | 核心代码: UserManager.java

基于Log4Net的日志系统

阅读目录 日志系统应具备的特性 Log4Net 配置文件:log4net.config 初始化 输出信息 对Log4Net的封装 log4net.config复杂配置 不管是Web应用程序还是WinForm应用程序,Visual Studio所带的调试功能都是足够强大,足以应付开发中的各种调试需求.但是,对于已经发布的应用,要记录错误.记载运行中的各种状态信息,就需要依靠日志系统了. 回到顶部 日志系统应具备的特性 一个好的日志系统,应该具备以下的特性: 1.运行稳定.因为日志的作用就是要在系统

exchange 2010 发送的邮件对方无法收到

大家好,有段时间没有发博客了,实在抱歉.多余的话不多说了,言归正传. 前2天有客户遇到个了棘手的问题,向我求助.下面我把此问题及处理方法分享给大家,希望对大家有所帮助 环境信息:exchange 2010 sp3(共2台服务器:1台CAS\HUB.1台MBX),没有高可用 问题描述:outlook客户端连接正常.OWA访问正常.接收邮件正常:发送邮件(包括:给自己发送.内网用户之间,内网用户向外部用户)显示发送成功,队列中没有排队,发件人没有收到退信,  但是收件人未收到邮件 处理过程: 通过问