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

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

  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>

然后代码如下:

  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,如果不够,则用空格填充;

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文件的最后一行中添加:

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

本文转至:http://blog.csdn.net/pfe_nova/article/details/12225349

[转]Log4Net日志插件配置详解的更多相关文章

  1. maven常用插件配置详解

    常用插件配置详解Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...

  2. java log4j基本配置及日志级别配置详解

    java log4j日志级别配置详解 1.1 前言 说出来真是丢脸,最近被公司派到客户公司面试外包开发岗位,本来准备了什么redis.rabbitMQ.SSM框架的相关面试题以及自己做过的一些项目回顾 ...

  3. Maven 变量及常见插件配置详解

    Maven 的 pom.xml 常用 变量 插件 配置 详解 一.变量 - 自定义变量及内置变量 1. 自定义变量 <properties> <project.build.name& ...

  4. Log4j 日志操作包配置详解

    log4j简介 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ...

  5. Maven变量及常见插件配置详解(转)

    一.变量-自定义变量及内置变量 1.自定义变量 <properties> <project.build.name>tools</project.build.name> ...

  6. Spring Boot 系列:日志动态配置详解

    世界上最快的捷径,就是脚踏实地,本文已收录架构技术专栏关注这个喜欢分享的地方. 开源项目: 分布式监控(Gitee GVP最有价值开源项目 ):https://gitee.com/sanjianket ...

  7. nginx 日志管理配置详解

    nginx的日志管理 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$statu ...

  8. 日志分析工具ELK配置详解

    日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...

  9. webpack4配置详解之常用插件分享

    前言 继上一次webpack的基础配置分享之后,本次将分享一些工作中项目常用的配置插件.也会包含一些自己了解过觉得不错的插件,如有分析不到位的,欢迎纠错,嗯,这些东西文档都有,大佬可绕过. Wepac ...

随机推荐

  1. STL在数组算法的使用

    find(a:起始位置 , b: 终止位置 , c: 要查找的内容)      ------>查找寻找内容的位置 count(a:起始位置 , b: 终止位置 , c: 要查找的内容)   -- ...

  2. FFMpeg的一些基础配置

    一 . CMakeLists.txt文件的使用 1.添加头文件的相对路径 : include_directories(include(这里面就是文件的名字)) 2.设置ffmpeg的库的路径(v7a或 ...

  3. “全栈2019”Java多线程第二十章:同步方法产生死锁的例子

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. BitMap算法详解

    所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间. 基本思想: 这此我用一个简单的例子来详细 ...

  5. css基础小总结

    header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em} .markdown-body{overflow:hidden} .markdo ...

  6. MYSQL NULL值特性

    NULL是一种“没有类型”的值,通常表示“无值”,“未知值”,“缺失值”,“超界”,“不在其中”等,我们在日常运用中很容易和NULL字符串混淆,这里大致整理了下NULL值的一些特性,以便能够正确使用N ...

  7. 【xsy1230】 树(tree) 点分治+线段树

    题目大意:有一棵$n$个节点的树,点的标号为$1$到$n$.树中的边有边权.给你$m$个询问,每个询问包含三个参数$l,r,pos$,你要求出标号在$l$到$r$之间的所有点中,到节点$pos$距离最 ...

  8. Linux grep命令详解[备份]

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  9. C、C++基础和编程风格 (转)

    原文链接 作者:寒小阳时间:2013年8月.出处:http://blog.csdn.net/han_xiaoyang/article/details/10515417.声明:版权所有,转载请注明出处, ...

  10. Java之集合(三)ArrayList

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7291339.html 1.前言 本章介绍List中最常用的一个类--ArrayList.在第一章中已经介绍了Li ...