本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、课程设计和辅导 4、单片机开发 5、串口通讯调试
 当前位置:文章中心 >> Winform/客户端程序
立即购买视频教程 log4net是一款优秀的第三方日志框架
夜鹰教程网 来源:www.yyjcw.com 日期:2017-11-1 13:54:56
  log4net是一款优秀的第三方日志框架,可以很容易的加载到开发项目中(引用log4net的dll,再配置些基本参数即可),帮助程序员把日志信息输出到各种不同的目标,常见的有文本、数据库、windows日志、邮件、内存缓冲区等目标。

这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



  log4net是一款优秀的第三方日志框架,可以很容易的加载到开发项目中(引用log4net的dll,再配置些基本参数即可),帮助程序员把日志信息输出到各种不同的目标,常见的有文本、数据库、windows日志、邮件、内存缓冲区等目标。

        首先需要log4net的dll(源码中dll版本是1.2.10.0),引用到程序中,然后再配置下配置文件,配置文件如下:

[html] view plaincopy

  1. <?xml version="1.0"?>  

  2. <configuration>  

  3.   <configSections>  

  4.     <section name="log4net"   

  5.              type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>  

  6.   </configSections>  

  7.   <!--站点日志配置部分-->  

  8.   <log4net>  

  9.     <root>  

  10.       <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->  

  11.       <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->  

  12.       <!--如果没有定义LEVEL的值,则缺省为DEBUG-->  

  13.       <level value="ERROR"/>  

  14.       <appender-ref ref="RollingFileAppender"/>  

  15.     </root>  

  16.     <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">  

  17.       <!--日志文件名开头-->  

  18.       <file value="c:\Log\TestLog4net.TXT"/>  

  19.       <!--多线程时采用最小锁定-->  

  20.       <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>  

  21.       <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->  

  22.       <datePattern value="(yyyyMMdd)"/>  

  23.       <!--是否追加到文件,默认为true,通常无需设置-->  

  24.       <appendToFile value="true"/>  

  25.       <!--变换的形式为日期,这种情况下每天只有一个日志-->  

  26.       <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义-->  

  27.       <!--<rollingStyle value="Date"/>-->  

  28.       <!--变换的形式为日志大小-->  

  29.       <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义-->  

  30.       <RollingStyle value="Size"/>  

  31.       <!--每天记录的日志文件个数,与maximumFileSize配合使用-->  

  32.       <MaxSizeRollBackups value="10"/>  

  33.       <!--每个日志文件的最大大小-->  

  34.       <!--可用的单位:KB|MB|GB-->  

  35.       <!--不要使用小数,否则会一直写入当前日志-->  

  36.       <maximumFileSize value="2MB"/>  

  37.       <!--日志格式-->  

  38.       <layout type="log4net.Layout.PatternLayout">  

  39.         <conversionPattern value="%date [%t]%-5p %c - %m%n"/>  

  40.       </layout>  

  41.     </appender>  

  42.   </log4net>  

  43. </configuration>  

        然后代码如下:

[csharp] view plaincopy

  1. using System;  

  2. using System.Reflection;  

  3. using log4net;  

  4. using log4net.Config;  

  5. namespace Log4Net1001  

  6. {  

  7.     class Program  

  8.     {  

  9.         static void Main(string[] args)  

  10.         {  

  11.             Console.WriteLine("Begin Run");  

  12.             XmlConfigurator.Configure();  

  13.             Type type = MethodBase.GetCurrentMethod().DeclaringType;  

  14.             ILog m_log = LogManager.GetLogger(type);  

  15.             m_log.Debug("这是一个Debug日志");  

  16.             m_log.Info("这是一个Info日志");  

  17.             m_log.Warn("这是一个Warn日志");  

  18.             m_log.Error("这是一个Error日志");  

  19.             m_log.Fatal("这是一个Fatal日志");  

  20.             Console.WriteLine("End");  

  21.             Console.ReadLine();  

  22.         }  

  23.     }  

  24. }  

        运行结果,在c:\Log\TestLog4net.TXT文件中写了如下信息:
        2013-10-01 22:35:53,793 [10]ERROR Log4Net1001.Program - 这是一个Error日志
        2013-10-01 22:35:53,802 [10]FATAL Log4Net1001.Program - 这是一个Fatal日志

        其中layout节点的配置说明:
        %m(message):输出的日志消息;
        %n(newline):换行;
        %d(datetime):输出当前语句运行的时刻;
        %r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;
        %t(threadid):当前语句所在的线程ID ;
        %p(priority): 日志的当前日志级别;
        %c(class):当前日志对象的名称;
        %L:输出语句所在的行号;
        %F:输出语句所在的文件名; 
        %-10:表示最小长度为10,如果不够,则用空格填充;

        其他开发时遇到的问题
        1.项目的目标框架为.NET Framework 3.5(或者4) Client Profile时会报出下图错误,改成.NET Framework 3.5(或者4) 即可;

         2.当configSections节点没有放在configuration节点下的第一个节点时,编译时不会报警告,但运行时不会记日志。这是因为自 定义的节点configSections这个必须放在第一个,这是app.config文件的语法规定;

        3.对于大量记日志的程序,需注意配置RollingStyle值为Composite,且设置MaxSizeRollBackups(每天记录的日志文 件个数)和maximumFileSize(每个日志文件的最大大小)。我以前遇过一次日志过大的问题,有一次版本临时发布就改了一个方法而没有经过测 试,造成每天记几十G日志的,几天就把服务器磁盘弄满了。

        4.当发现不记日志时,可从两方面调查问题,一是log4net有没有初始化,也就是XmlConfigurator.Configure();二是看level节点的配置是不是正确;

        5.当发现一些设置参数没有起作用时,请检查是不是同一个节点被设置过多次,当被重复设置时,log4net会选择最后一个作为实际的设置。例如设置记录 日志的级别设置两次如<level value="ERROR"/><level value="All"/>,则最终会以ALL作为记录日志的级别。

        6.如果是网站项目,须在项目中的AssemblyInfo.cs文件的最后一行中添加:

[csharp] view plaincopy

  1. [assembly: log4net.Config.DOMConfigurator(ConfigFile = "Web.config", Watch = true)]   

        希望能对读者有些帮助,如果有什么错误或想法,还望不吝指教,转载请保留原文链接。项目实战见Log4net终极版。完整程序见源码,源码下载

复制链接 网友评论 收藏本文 关闭此页
上一条: c#实现广域网聊天视频教程  下一条: C#实现Http请求例子
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  推荐教程/优惠活动

  热门服务/教程目录

  夜鹰教程网  新手必看,详细又全面。
  夜鹰教程网  购买教程  夜鹰教程网  在线支付-方便
  夜鹰教程网  担保交易-快捷安全   夜鹰教程网  闪电发货
  夜鹰教程网  电话和QQ随时可以联系我们。
  夜鹰教程网 不会的功能都可以找我们,按工作量收费。

客服电话:153 9760 0032

购买教程QQ:1416759661  
  热点推荐
破解封路由的方法详解
技巧篇:只用这一招就能拒绝全部的…
挂马方法和技巧大汇总
网络安全防护:如何防止远程入侵
如何解决:系统开机就弹出广告网页…
彻底防御U盘病毒
安全配置交换机端口提高网络安全性…
浅析网络安全审计原理和技术(2)
用U盘就可以去除win XP管理员密码…
电脑硬盘各逻辑盘用鼠标左键双击它…
详解网站挂马的手段
新手认识;网银账号相关知识
ARP欺骗和ICMP欺骗催生全新DOS工具…
浅析网络安全审计原理和技术(1)
木马最基本的隐藏:不可见窗体和隐…
  尊贵服务
夜鹰教程网 承接业务:软件开发 网站开发 网页设计 .Net+C#+VS2008+MSsql+Jquery+ExtJs全套高清完整版视频教程
  最近更新
.NET C# 和Java开发人员岗位切换
模拟登录人人网
HttpWebRequest以及HttpWebRespon…
HttpClient使用说明
Winform为Combobox树添加数据
C#之允许DataGridView选中整行
C#中DataGridView只能选择一行禁止…
为自动填充列调整大小期间不能执行…
c# winform设置listBox如何设置te…
c#的委托(代理)和事件
C# Task 任务计划
C# socket 多线程多管道可断点传送…
让ListBox的滚动条滚动到最底部
c#用事件模式实现通知
什么是异步编程,为什么会需要异…
  工具下载  需要远程协助? 

sql2008视频教程 c#视频教程

VIP服务:如果您的某个功能不会做,可以加我们QQ,给你做DEMO!

JQUERY  Asp.net教程

MVC视频教程  vs2012
.NET+sql开发
手机:15397600032 C#视频教程下载
微信小程序 vue.js高级实例视频教程

教程咨询QQ:1416759661


这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



关于我们 | 购买教程 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3