Log4net发送日志邮件(实例下载)以及Log4Net配置详解
2016-10-18 13:40
721 查看
项目中要使用Log4net组件发送日志文件,大概需要以下几步:
首先,建立Log4net配置文件
其次,建立LogHelper类统一提供logger实例
接下来,就可以在程序中使用提供的LogHelper类来记录日志了,如下
调用异步方法记录日志
2.调用logger对象记录日志
附上效果图一张
实例下载
首先,建立Log4net配置文件
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <root> <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) --> <level value="all" /> <appender-ref ref="ColoredConsoleAppender"/> <appender-ref ref="RollingLogFileAppender"/> <appender-ref ref="SmtpAppender"/> </root> <!--文件显示日志--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <param name= "File" value= "log/log-file.txt"/> <!--是否是向文件中追加日志--> <param name= "AppendToFile" value= "true"/> <!--log保留天数--> <param name= "MaxSizeRollBackups" value= "10"/> <!--日志文件名是否是固定不变的--> <param name= "StaticLogFileName" value= "false"/> <!--日志文件名格式为:2008-08-31.log--> <param name= "DatePattern" value= "yyyy-MM-dd".log""/> <!--日志根据日期滚动--> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <!-- %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 %n(new line):换行 %d(datetime):输出当前语句运行的时刻 %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 %t(thread id):当前语句所在的线程ID %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 %c(class):当前日志对象的名称,例如: 模式字符串为:%-10c -%m%n 代码为: ILog log=LogManager.GetLogger(“Exam.Log”); log.Debug(“Hello”); 则输出为下面的形式: Exam.Log - Hello %L:输出语句所在的行号 %F:输出语句所在的文件名 %-数字:表示该项的最小长度,如果不够,则用空格填充 --> <param name="ConversionPattern" value="%n%d [%t] %-5p %c - %m%n %loggername" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="FATAL" /> </filter> </appender> <!-- 控制台前台显示日志 --> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="WARN" /> <foreColor value="Yellow, HighIntensity" /> </mapping> <mapping> <level value="ERROR" /> <foreColor value="Red, HighIntensity" /> </mapping> <mapping> <!--定义日志输出级别--> <level value="Info" /> <foreColor value="Green" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <!--<conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" />--> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Info" /> <param name="LevelMax" value="Fatal" /> </filter> </appender> <!--发送邮件通知异常信息--> <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> <authentication value="Basic" /> <!--接收方邮箱地址,多个接收方以","隔开--> <to value="523673444@qq.com" /> <!--测试126邮箱可以发邮件,QQ邮箱不能发--> <!--发送方邮箱地址--> <from value="您的126邮箱账号" /> <!--发送发邮箱地址--> <username value="您的126邮箱账号" /> <!--发送方邮箱登录密码--> <password value="您的126邮箱密码" /> <!--邮件主题--> <subject value="homework2应用程序错误" /> <!--邮件服务器--> <smtpHost value="smtp.126.com" /> <port value ="25"/> <!--设置所使用的循环缓冲区的大小,默认为512个事件,若将此值设置为小于等于1,将没有缓冲,记录事件会同步交付--> <bufferSize value="1" /> <!--超长部分是否丢弃--> <lossy value="true" /> <!-- 下面的定义, 就是 日志级别 大于 WARN 的, 才发邮件. --> <evaluator type="log4net.Core.LevelEvaluator"> <threshold value="FATAL"/> </evaluator> <!-- 下面是 定义邮件的格式 (好多换行啊) --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n%d [%t] %-5p %c - %m%n %loggername" /> </layout> </appender> </log4net> </configuration>
其次,建立LogHelper类统一提供logger实例
public class LogHelper : Singleton<LogHelper> { public LogHelper() { var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "configfiles/log4net.config"); XmlConfigurator.ConfigureAndWatch(logCfg); } public ILog Logger { get { return LogManager.GetLogger("homework2.logger"); } } /// <summary> /// 异步的方式记录日志 /// </summary> /// <param name="errMsg"></param> public void AsyncLogger(string errMsg) { Task.Factory.StartNew(() => Logger.Fatal(errMsg)); } }
接下来,就可以在程序中使用提供的LogHelper类来记录日志了,如下
调用异步方法记录日志
EventModelList.Find(e => typeof(T).Name.Equals(e.Name)).EventList.ToList().ForEach( str => { t.FireEventHander += () => LogHelper.Instance.AsyncLogger(str); });
2.调用logger对象记录日志
class Program { static void Main(string[] args) { try { //TODO:一些代码 } catch (Exception ex) { LogHelper.Instance.Logger.Error(ex.Message); LogHelper.Instance.Logger.Error(ex.StackTrace); } Console.ReadKey(); } }
附上效果图一张
实例下载
相关文章推荐
- .net 利用 Jmail 发送邮件(实例和Jmail4.3组件下载)以及Jmail参数说明
- .net 邮件发送原理及实例以及smtp详解
- log4j配置详解 输出到控制台,文件,回滚文件,发送日志邮件,输出到数据库日志表,自定义标签等全套功能
- phpmailer发送gmail邮件实例详解
- 解决log4net独占日志文件的问题以及 log4net的各种输出配置(Appender)
- 在java中 发送邮件 以及定时发送 以及 发送多附件项目下载
- 使用Log4j为项目配置日志输出应用详解以及示例演示的实现分析
- 解决log4net独占日志文件的问题以及 log4net的各种输出配置(Appender)
- 使用Log4Net发送日志邮件
- JVM内存参数详解以及配置调优(四)-GC日志
- 配置log4net 实现支持SSL发送邮件
- 在Managed Code通过Google Gmail发送邮件以及如何通过Outlook配置Gmail
- 解决log4net独占日志文件的问题以及 log4net的各种输出配置(Appender)
- phpmailer发送gmail邮件实例详解
- Rsync服务器配置,安装、配置、实例以及原理详解(一)
- phpmailer发送gmail邮件实例详解
- server 2003 stmp服务器简单配置 以及.net 下发送邮件
- .LOG4J的配置(输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能)
- LOG4J的配置..实现了输出到控制台、文件、回滚文件、发送日志邮件
- .net jMail邮件发送(含抄送、密送、多发、日志记录)实例代码