说实话,我并不是太想写这篇文章,因为我承诺过要完成博客园的部分功能,所以一直都在积极的利用下班时间来完善这个系统,

但是我又不想让看我源代码的朋友不知道我写的代码是什么意思,所以我还是单独写一个文章,叙述一下我对管理日志的看法,

当然主要是log4net的使用。为了写这篇文章,我查看了博客园的很多关于log4net的文章,但是结果令我很不满意,因为他们对于log4net的介绍基本上都是大同小异,

我不敢说他们写的有错,因为确实就是那么写的,但是为什么我还要写这篇博客呢,因为我想以一个学习者的心态来分析这个框架结构,而不是以一个老师来分析。

从一个学习者到老师需要很多的路要走的,他们都省略了学习者入门时的困难,所以我决定还是来写一篇博客来叙述一下。希望大家吐槽。
  首先,现在系统越来越复杂,并且集成的模块也越来越多,在测试系统的时候我们可以利用单元测试(有单元测试框架支持,比如nunit等),

还可以通过认为的点击来测试系统功能的正常,在开发过程中我们可以测试出来很多的问题。但是在系统已经部署到服务器上以后,我们就不能进行单元测试了,

因为部署到服务器上的不是源码,当然也有其他的方式可以测试系统bug,但是在实际环境中会出现很多令人意想不到的问题。举个简单的例子,虽然我们会在系统中进行异常的捕获,

并且会显示特定的错误信息,但是错误信息是对用户显示的,我们开发者当然希望知道错误的详细信息,以便我们可以改正错误。这是必须的,所以最简单也最直接的方式就出现了,

就是记录系统日志,当然如果不采用log4net日志管理框架,我们也是可以通过文件操作来写入日志,但是这个不便于配置。正如我听到的一个老师说的,

如果你的系统要进行扩展,那么你会怎么办?这是当时很令我头疼的一个问题,但是我现在基本知道思路,就是采用分层开发模式,将不同的层放到对应的类库中,

另外我们也可以采用IOC(依赖注入)或者Nhibernate等框架来提高系统的灵活性。
 废话太多,大家都会没有耐心看下去,但是如果这是代码,我估计大家更不会看下去。呵呵
  因为园子里有很多介绍log4net的介绍,所以我就不详细的介绍了,我只说我个人认为在开发中是重点的,欢迎大家吐槽~~
  我们知道log4net有一个姐妹叫log4j,他们是针对.Net和java开发的两个结构基本相同的框架结构,

看到这种说法,我一直想说,为什么好的框架都会从java移植而来,并且都是apache这个组织开发的呢?这里面也不是我能理解的,我也是吐槽一下。

log4net主要由Appender,Logger,Filter,Layout和一个Object Render组成。

其中

Appender(附着器)主要用来确定日志记录的位置,也可以这么说就是确定日志是记录到数据库还是文件或其他终端。

Logger(记录器),记录器 看字面意思就应该可以猜到他就是用来确定要发送的日志信息。比如说,有一个异常发生,我们需要记录什么数据,都是由Logger负责的。

Filter(过滤器) 可以这么理解,这个和MVC中的Filter还是有差别的,这里的Filter表示的是过滤,就像筛子 可以过滤一样,而MVC中的Filter也可以叫做过滤器,但是它更多的是完成

Aop(面向切面或面向方面) 的横向的过滤导向,也可以认为是对某个Action或Controller施加的限制。

Layout(布局) 布局很容易理解,就像装修一样,把我们要记录的数据整理成我们需要的格式。

至于后面的object render,我在官方文章看了一下,个人理解就相当于渲染输出,就像服务器发送html到浏览器以后,浏览器要渲染输出的效果应该是一样。

简单的描述了一下log4net的组成,还有很重要的就是log4net的分级,其中log4net一种氛围5级,按从高到低的顺序依次为:

off>fatal>Error>Warn>Info>Debug>All

看到这个分级,大家一定要骂我了,一共有七个值,偏偏说5个分级,这里我解释一下,off的意思就是关闭log4net的日志输出,

fatal的级别最高,表示的就是特别严重的错误,一般是在应用程序崩溃的时候,而error则是表示错误出现,一般用在出现了异常以后,

Warn表示警告,这个不会使程序出现异常,但是可能会影响程序性能,info 和debug则可以随意了。另外all表示的就是所有的分级都可以满足。

这里大家要注意一下的就是,这个分级是会影响程序日志输出的。比如说你在程序中定义了 log.Info(message) 和log.debug(message),但是你定义的日志应当输出的级别是info,很抱歉

的告诉你,log.debug(message)中的信息不会写入日志,因为debug在顺序中是小于info的。

说了log4net中最重要的两个部分,现在就需要正式的启用log4net来输出日志信息了,签于园友们都有很详细的配置信息,所以我就把主要的两个简单的描述一下,如果有需要我会在注释中

写入的。在项目中我们一般会用到输出日志到文件或者数据库中,这两种方式,我个人也非常喜欢这两种方式。一般我会把日志同时输出到文件和数据库中,虽然会有一点的性能损失,但是对于

日志的完整性还是十分值得的,当然输出的日志越少性能会越高,大家都懂得。

log4net是支持配置文件来更改其输出方式的,我们可以把配置文件放到项目配置文件web.config或winform的app.config中,也可以单独的放到固定的配置文件中,现在我们把配置文件放

到项目配置文件中。

配置文件如下

 
  1 <configSections>
2 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/><!--配置一个结点 名称为log4net-->
3 </configSections>
4 <log4net debug="true">
5 <appender name="LogFileAppender" type="log4net.Appender.FileAppender" > <!--定义的是日志记录到文件的附着器 name表示该附着器的名称-->
<!--在log4net中还有一个附着器RollingFileAppender 它表示会循环生成很多文件,举例来说,就是设置一共可以生成20个文件,每个文件的大小为2K,那么如果第一个-->、
<!--文件的大小超过2K,就会自动创建一个按顺序命名的文件-->
6 <param name="File" value="c:\Log\DBLog.txt" /> <!--日志记录的存在路径-->
7 <param name="AppendToFile" value="true" /><!--为true就表示日志会附加到文件,为false,则会重新创建一个新文件-->
8 <layout type="log4net.Layout.PatternLayout"><!--输出内容控制-->
9 <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
10 </layout>
11 </appender>
12 <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"><!--设置发送电子邮件的附着器-->
13 <authentication value="Basic" />
14 <to value="guozhiqi@babaike.com" />
15 <from value="guozhiqi21@163.com" />
16 <username value="guozhiqi21" />
17 <password value="password" />
18 <subject value="测试错误信息显示" />
19 <smtpHost value="smtp.163.com" />
20 <bufferSize value="512" />
21 <lossy value="true" />
22 <evaluator type="log4net.Core.LevelEvaluator">
23 <threshold value="debug"/>
24 </evaluator>
25 <layout type="log4net.Layout.PatternLayout">
26 <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
27 </layout>
28 </appender>
29 <!--<logger name="smtp">
30 <level value="debug"/>
31 <appender-ref ref="SmtpAppender"/>
32 </logger>-->
33 <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"><!--存储到数据库的操作-->
34 <bufferSize value="10"/>
35 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
36 <connectionString value="server=192.168.1.66;database=教学;user id=sa;password=sa1234"/>
37 <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date,
@log_thread, @log_level, @log_logger, @log_message, @log_exception)"/>
38 <parameter>
39 <parameterName value="@log_date"/>
40 <dbType value="DateTime"/>
41 <layout type="log4net.Layout.RawTimeStampLayout"/><!--可以认为是记录日志的时间-->
42 </parameter>
43 <parameter>
44 <parameterName value="@log_thread"/>
45 <dbType value="String"/>
46 <size value="255"/>
47 <layout type="log4net.Layout.PatternLayout">
48 <conversionPattern value="%thread"/><!--记录日志时的线程号-->
49 </layout>
50 </parameter>
51 <parameter>
52 <parameterName value="@log_level"/>
53 <dbType value="String"/>
54 <size value="50"/>
55 <layout type="log4net.Layout.PatternLayout">
56 <conversionPattern value="%level"/><!--日志级别-->
57 </layout>
58 </parameter>
59 <parameter>
60 <parameterName value="@log_logger"/>
61 <dbType value="String"/>
62 <size value="255"/>
63 <layout type="log4net.Layout.PatternLayout">
64 <conversionPattern value="%logger"/><!--哪个记录器存储的该日志-->
65 </layout>
66 </parameter>
67 <parameter>
68 <parameterName value="@log_message"/>
69 <dbType value="String"/>
70 <size value="4000"/>
71 <layout type="log4net.Layout.PatternLayout">
72 <conversionPattern value="%message"/><!--日志信息-->
73 </layout>
74 </parameter>
75 <parameter>
76 <parameterName value="@log_exception"/>
77 <dbType value="String"/>
78 <size value="255"/>
79 <layout type="log4net.Layout.ExceptionLayout"/><!--异常信息-->
80 </parameter>
81 </appender>
82 <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"><!--这个就是我在上面提到的RolllingFileAppender-->
83 <file value="example.log" /><!--文件名称-->
84 <appendToFile value="false" /><!--会创建新文件,一般设置为true,这里设置为false,是为了看到创建的文件-->
85 <maximumFileSize value="1KB" /><!--文件大小-->
86 <maxSizeRollBackups value="20" /><!--创建最大文件数-->
87 <layout type="log4net.Layout.PatternLayout">
88 <conversionPattern value="%level %thread %logger - %message%newline" />
89 </layout>
90 </appender>
91 <!--<logger name="rolling">
92 <level value="fatal"/>
93 <appender-ref ref="RollingFile"/>
94 <appender-ref ref="ADONetAppender"/>
95 </logger>-->
96 <root>
97 <level value="info" />
98 <appender-ref ref="ADONetAppender" />
99 <appender-ref ref="SmtpAppender"/>-->
100 <appender-ref ref="LogFileAppender"/>
101 <appender-ref ref="ColoredConsoleAppender"/>
102 <appender-ref ref="EventLogAppender"/>
103 <append-ref ref="NetSendAppender"/>
104 <appender-ref ref="RollingFile"/>
105 </root>
106 </log4net>
在配置文件创建好了以后,按道理说就可以在程序中使用log4net了,创建Log4NetController,在该控制器中进行对log4net的测试
 1   public class Log4netController : Controller
2 {
3
4 private static readonly log4net.ILog log = log4net.LogManager.GetLogger("rolling");
5
6 public ActionResult Index()
7 {
8 log4net.Config.XmlConfigurator.Configure();
9
10 log.Info("log日志信息");
11 log.Debug("debug信息");
12 log.Error("error信息");
13 log.Warn("warn信息");
14 Exception ex = new Exception("这里显示的是异常信息");
15 log.Fatal("fatal信息", ex);
16 return View();
17 }
18
19 }

运行程序,就可以在数据库中看到日志生成的记录

aaarticlea/png;base64,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" alt="" />


说明log4net的日志记录到数据库是正确的。下面我们来分析一下,因为我是在把代码复制到博客中才加的注释,所以不是C#标准的注释方式,

下面我们来把使用log4net中要注意的地方或者我认为是会令人疑惑的地方叙述一下,

  1. 其实我们在配置log4net的时候最好是直接复制原来可以运行的配置文件,然后进行修改,因为如果你的配置文件有一点错误,那么log4net都不会正常工作的,

    这里还有一个更严重的问题就是我们不会得到log4net引发的任何异常。我们只能是慢慢修改,有耐心,最好是复制 粘贴

  2. <!--<logger name="rolling">
    92 <level value="fatal"/>
    93 <appender-ref ref="RollingFile"/>
    94 <appender-ref ref="ADONetAppender"/>
    95 </logger>-->
    96 <root>
    97 <level value="info" />
    98 <appender-ref ref="ADONetAppender" />
    99 <appender-ref ref="SmtpAppender"/>-->
    100 <appender-ref ref="LogFileAppender"/>
    101 <appender-ref ref="ColoredConsoleAppender"/>
    102 <appender-ref ref="EventLogAppender"/>
    103 <append-ref ref="NetSendAppender"/>
    104 <appender-ref ref="RollingFile"/>
    105 </root>

这段代码中的root和logger结点我们需要注意一下,因为在root中定义的是针对所有的logger,也就是说如果你在程序中使用的不是LogManager.getLogger(Loggername)这种方式,那么你默认的会使用root结点的配置信息来记录日志,而如果你使用了这种方式,那么就会使用对应的logger结点的配置信息。

3.log4net是可配置、可修改的灵活日志输出,我们必须在程序中对log4net进行配置。

log4net.Config.XmlConfigurator.Configure(); 这个是默认的配置方式,当然我们也可以利用参数中加入配置文件路径来指定配置文件。这个是必须要配置的,切记。

还有就是这个配置应当是在程序启动时就需要配置完成,因此在application_start中是比较好的方法。

4.log4net输出日志的时候我们看到了很多的%形式,这是表示的什么意思呢?其实%thread 就是表示当前的线程名称,%level就是表示日志的级别。

5.最后我还想补充一下,任何和程序执行无关的代码都会影响程序的性能,日志的输出和程序功能的完成没有直接的关系,过多的日志输出会影响程序响应的性能,另外我们要控制删除日志的级别,以便不要任何日志信息都会输出。

6.通过 private static readonly log4net.ILog log = log4net.LogManager.GetLogger("rolling"); 可以的到一个log对象,但是我们如何确定是否需要输出到对应的级别呢?

log4net提供了

aaarticlea/png;base64,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" alt="" />

我们可以通过这几个属性来判断是否需要输出不同级别的日志。
暂时想到的就这么多,我想到别的还会加上,欢迎吐槽

补充一下:
 1   <appender name="RollingLogRootFileAppender" type="log4net.Appender.RollingFileAppender">
2 <!--日志的路径-->
3 <file value="..\temp\log\Winlog" />
4 <!--是否覆盖,默认是追加true-->
5 <appendToFile value="true"/>
6 <!--文件滚动周期(每日创建新日志文件)-->
7 <datePattern value="yyyyMMdd&quot;.txt&quot;"/>
8 <!--设置无限备份=-1 ,最大备份数为1000-->
9 <maxSizeRollBackups value="1000"/>
10 <!--名称是否可以更改为false为可以更改-->
11 <staticLogFileName value="false" />
12 <!--文件滚动选项Composite表示根据日期和大小来滚动-->
13 <rollingStyle value="Composite" />
14 <layout type="log4net.Layout.PatternLayout">
15 <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss}[%t][%-5p][%c]%m%n%exception%n" />
16 </layout>
17 </appender>
这个可以用来对RolingFile进行更好的控制

log4net 总结的更多相关文章

  1. Log4net - 规则简介

    参考页面: http://www.yuanjiaocheng.net/CSharp/csharprumenshili.html http://www.yuanjiaocheng.net/entity/ ...

  2. Log4net - 项目使用的一个简单Demo

    参考页面: http://www.yuanjiaocheng.net/entity/entitytypes.html http://www.yuanjiaocheng.net/entity/entit ...

  3. log4net使用手册

    1. log4net简介 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.Java平台下,它还 ...

  4. Log4Net应用问题

    问题 一.日志存储方式 1.txt 2.SQLServer数据库 3.log文件 二.项目类型不同 1winFrom 2webFrom 3MVC 4WPF 5控制台 三.切分依据不同 1.空间大小 2 ...

  5. 在C#代码中应用Log4Net系列教程(附源代码)

    Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...

  6. Log4net入门(帮助类篇)

    在前几篇Log4net入门文件的讲述过程中,我们在使用log4net的类中都要编写如下一行代码: private static log4net.ILog log = log4net.LogManage ...

  7. Log4net入门(WCF篇)

    在上一篇Log4net入门(ASP.NET MVC 5篇)中,我们讲述了如何在ASP.NET MVC 5项目中使用log4net.在这一篇中,我们将讲述如何在WCF应用中使用log4net,为了讲述这 ...

  8. Log4net入门(ASP.NET MVC 5篇)

    在前4篇Log4net入门文章中,我们讲述了log4net的一些简单用法,在这一篇中我们主要讲述如何在ASP.NET MVC 5项目中将日志信息写入SQL Server数据库中. 一.创建最简单的AS ...

  9. Log4net入门(SQL篇)

    我们在Log4net入门(回滚日志篇)中详细讲述了如何将日志信息输出到日志文件中,在这一篇中,我们将讲述如何将日志文件写入SQL Server数据库,以方便我们分析统计日志信息. 首先,我们在SQL ...

  10. Log4net入门(回滚日志文件篇)

    在上一篇Log4net(日志文件篇)中,我们使用"log4net.Appender.FileAppender"将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会 ...

随机推荐

  1. mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication的解决方法

    直接命令行操作没有问题,但是PHP连接就会报上面的错误. SET old_passwords =0; USE mysql; UPDATE user SET password =PASSWORD('yo ...

  2. android学习日记21--消息提示之Toast和Notification

    1.Toast Toast译为土司,类似切片面包,用于弹出比较快速的及时提示信息.当Toast被显示时,虽然它悬浮应用程序最上方,但是并未获得焦点.它的设计就是为了提示有用的信息,而不打扰用户其他操作 ...

  3. php中body下出现莫名空白字符

    php中body下出现莫名空白字符,出现原因 1. 模板前面有莫名格式空格,删不掉,必须把模板里面东西复制出来,新建一个文件弄进去,覆盖原有的 2.docutype前面出现代码,也会导致此问题(有可能 ...

  4. C# 之 日常积累(二)

    主要涉及(1)数字前补0:(2)去掉decimal类型后边无效的0相关问题. 1.数字前补0 ; ) { returnnumber.ToString(); } else { returnnumber. ...

  5. JS判断单选框是否选中

    判断单选框是否选中$("#isallday").attr("checked")

  6. Linux基础(一)

    一.安装linux系统可以用的5种方法 1.光盘 2.硬盘 3.NFS 映像 4.FTP 5.HTTP 硬盘安装分两种情况: A.是从Win系统上安装 B.是从别的Linux启动安装 这里介绍大多数人 ...

  7. Matlab使用难点记忆

    MATLAB的数据显示格式 虽然在MATLAB系统中数据的存储和计算都是双精度进行的,但MATLAB可以利用菜单或format命令来调整数据的显示格式.Format命令的格式和作用如下: l  for ...

  8. pat 1006 Sign In and Sign Out (25)

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  9. adb uninstall卸载apk 命令后跟的是包的名称

    昨天在使用adb卸载程序,结果死活卸载不了.我输入的命令和系统提示如下: arthur@arthur-laptop:~$ adb uninstall com.hase.bclm.client-2.ap ...

  10. Java基础环境搭建