一、Log4net特征

1、自定义日志输出级别

Log4net将日志分为五个级别优先级从高到低依次:FATAL > ERROR > WARN > INFO > DEBUG,此外还有ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求)这两种特殊的级别。可以通过日志级别来控制日志是否输出。

如果你配置文件中定义的是INFO级别,程序中有三种日志记录方式

Log.Info(“日志内容”),Log.Warn(“日志内容”),Log.Debug(“日志内容”)

则Log.Info,Log.Debug都会输出日志,Log.Warn不会输出日志。

2、自定义日志输出方式

Log4net的日志输出方式很灵活,可以将日志输出至文本文件,控制台,邮件,Windows Event Log,数据库等等。对于写日志至文本文件还可以有如下非常灵活的配置。

a、按时间段打印日志,按月,按日 ,按时,按分等随你配置 b、按文件的大小 打印滚动日志,如每10M,100M一个日志文件,这样可以防止日志文件不至于过大,日志文件达到4,5G日后我们基本上就很难打开了。 c、指定日志大小,比如说指定500M,那么日志将只有一个且不会超出500M。

二、Log4net的安装

1、用户可以从 http://logging.apache.org/log4net/ 下载log4net的源代码。

2、解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。

3、用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。

三、在程序中使用log4net

1、log4net配置文件与程序的关联

log4net的配置可以放在应用程序的默认配置文件中(app.config或web.config),也可以在自己指定的配置文件中。log4net框架中是使用log4net.Config.XmlConfigurator在程序集的级别上定义配置文件。

例如,找到当前项目的Assemblyinfo.cs文件添加下面一行,将与Web.config文件关联起来

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

Assemblyinfo.cs配置说明

ConfigFile

指出了我们的配置文件的路径及文件名,包括扩展名。

ConfigFileExtension

如果我们对被编译程序的程序集使用了不同的文件扩展名,那么我们需要定义这个属性,缺省的,程序集的配置文件扩展名为”config”。

Watch (Boolean属性)

log4net框架用这个属性来确定是否需要在运行时监视文件的改变。如果这个属性为true,那么FileSystemWatcher将会被用来监视文件的改变,重命名,删除等事件。

其中:ConfigFile和ConfigFileExtension属性不能同时使用,ConfigFile指出了配置文件的名字

四、log4net的标准配置文档示例(web.config)

XML 代码   复制

<?xmlversion="1.0"encoding="utf-8" ?>

<configuration>

  <configSections>

    <sectionname="log4net"

             type="log4net.Config.Log4NetConfigurationSectionHandler" />

  </configSections>

  <log4net>

    <root>

      <levelvalue="WARN" />

      <appender-refref="LogFileAppender" />

      <appender-refref="ConsoleAppender" />

    </root>

    <loggername="testApp.Logging">

      <levelvalue="DEBUG"/>

    </logger>

    <appendername="LogFileAppender"  type="log4net.Appender.FileAppender" >

      <paramname="File"value="log-file.txt" />

      <paramname="AppendToFile"value="true" />

      <layouttype="log4net.Layout.PatternLayout">

        <paramname="Header"value="[Header]
"/>

        <paramname="Footer"value="[Footer]
"/>

        <paramname="ConversionPattern"  value="%d [%t] %-5p %c[%x]  - %m%n" />

      </layout>

      <filtertype="log4net.Filter.LevelRangeFilter">

        <paramname="LevelMin"value="DEBUG" />

        <paramname="LevelMax"value="WARN" />

      </filter>

    </appender>

    <appendername="ConsoleAppender"   type="log4net.Appender.ConsoleAppender" >

      <layouttype="log4net.Layout.PatternLayout">

        <paramname="ConversionPattern"  value="%d [%t] %-5p %c [%x] -%m%n" />

      </layout>

    </appender>

  </log4net>

</configuration>

五、配置文件节点说明

1、在配置章节中,定义section节点。节点名称为:须为log4net,且大小写敏感。

<configSections>

<sectionname="log4net"

type="log4net.Config.Log4NetConfigurationSectionHandler" />

</configSections>

2、root节点说明  

(1)根logger,所有其它logger都默认继承它。root元素没有属性。

2)支持的子元素

appender-ref 0个或多个,要引用的appender的名字。

level 最多一个。只有在这个级别或之上的事件才会被记录。

param 0个或多个,设置一些参数。

(3)在<root>标签里,可以定义level级别值和Appender的列表。

如果没有定义LEVEL的值,则缺省为DEBUG。可以通过<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。这种缺省的行为方式也可以通过显式地设定<logger>标签的additivity属性为false而改变。

3、Logger节点说明

(1)支持的属性name,Additivity两个属性      

name必须的,logger的名称

additivity 可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender。

(2)支持的子元素

appender-ref 0个或多个,要引用的appender的名字。

evel最多一个。只有在这个级别或之上的事件才会被记录。

param 0个或多个,设置一些参数。

(3)<logger> 元素预定义了一个具体日志对象的设置

然后通过调用LogManager.GetLogger(“testAPP.Logging”)函数,你可以检索具有该名字的日志。如果LogManager.GetLogger(…)打开的不是预定义的日志对象,则该日志对象会继承根日志对象的属性。知道了这一点,我们可以说,其实<logger>标签并不是必须的。

4、Appender节点说明

(1)定义日志的输出方式,只能作为 log4net 的子元素。name属性必须唯一,type属性必须指定。支持name,type两个属性。

name 必须的,Appender对象的名称

type 必须的,Appender对象的输出类型

(2)支持的子元素

appender-ref 0个或多个,允许此appender引用其他appender,并不是所以appender类型都支持。

filter 0个或多个,定义此app使用的过滤器。

layout 最多一个。定义appender使用的输出格式。

param 0个或多个,设置Appender类中对应的属性的值。

(3)在<root>标签或单个的<logger>标签里的Appender对象可以用<appender>标签定义

<appender>标签的基本形式如上面所示。它定义了appender的名字和类型。 另外比较重要的是<appender>标签内部的其他标签。不同的appender有不同的<param>标签。在这里,为了使用FileAppender,你需要一个文件名作为参数。另外还需要一个在<appender>标签内部定义一个Layout对象。Layout对象定义在它自己的<layout>标签内。<layout>标签的type属性定义了Layout的类型(在本例里是PatternLayout),同时也确定了需要提供的参数值。Header和Footer标签提供了一个日志会话(logging session)开始和结束时输出的文字。有关每种appender的具体配置的例子,可以在log4net\doc\manual\example-config-appender.html中得到。

5、Filter节点说明

过滤器,只能作为<appender>的子元素。

支持的属性:

type 必须的,Filter的类型

支持的子元素:param 0个或多个,设置一些参数。

6、Layout节点说明

布局,只能作为<appender>的子元素。

支持的属性:

type 必须的,Layout的类型

支持的子元素:param 0个或多个。

log4net.Layout.PatternLayout中的转换模式(ConversionPattern)

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

%n(new line):换行

%d(datetime):输出当前语句运行的时刻

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

%t(thread id):当前语句所在的线程ID

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

%c(class):当前日志对象的名称,例如:

%L:输出语句所在的行号

%F:输出语句所在的文件名

%-数字:表示该项的最小长度,如果不够,则用空格填充

例如

转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

176 [main] INFO  org.foo.Bar - Located nearest gas station.

7、Param

<param>元素可以是如何元素的子元素。

支持的属性

name 必须的,取值是父对象的参数名。

value 可选的,value和type中,必须有一个属性被指定。value是一个能被转化为参数值的字符串。

type 可选的,value和type中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。

log4net 使用笔记的更多相关文章

  1. Log4net使用笔记

    Log4net使用笔记   编写人:CC阿爸 2013-10-29 近来在处理项目时候,想将系统的操作日志以文本的形式记录下来,方便对系统操作记录进行追踪. 经过在网上搜索部分解决方案,大致可以归纳如 ...

  2. [转载]Log4net学习笔记

    Log4net 学习笔记: 主要是根据apache站点整理的: 原文链接:http://logging.apache.org/log4net/release/sdk/ http://logging.a ...

  3. log4net学习笔记

    一直想找一个好用的日子类,今天偶然的机会看到了log4net这个类库,过来学习一下. log4net是.NET框架下的一个日子类库,官网是http://logging.apache.org/log4n ...

  4. asp.net MVC日志插件Log4Net学习笔记二:保存日志到sqlserver的配置

    1.写到sqlserver的配置: <!--保存到SQLSERVER数据库日志--> <log4net> <appender name="AdoNetAppen ...

  5. asp.net MVC日志插件Log4Net学习笔记一:保存日志到本地

    log4net(Log For Net)是Apache开源的应用于.Net框架的日志记录工具,详细信息参见Apache网站.它是针对Java的log4j(Log For Java的)姊妹工具.用过lo ...

  6. log4net 学习笔记

    记入最基本的用法 : refer : http://www.cnblogs.com/aehyok/archive/2013/05/07/3066010.html <configuration&g ...

  7. Log4Net学习笔记(1)-完整的例子

    一.开发环境 编译器:VS2013 .Net版本:4.5 二.开发流程 1.从nuget上获取log4net 2.配置log4net的配置文件 <?xml version="1.0&q ...

  8. ASP.NET MVC学习之Log4Net配置(日志记录)

    Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: <!--Log4Net配 ...

  9. log4net基本日志使用笔记[windows application]

    Ref: http://www.cnblogs.com/wangsaiming/archive/2013/01/11/2856253.html http://www.cnblogs.com/zhouf ...

随机推荐

  1. bzoj 2115 线性基

    这种路径异或问题,可以转换为一条路径和若干个环的线性组合,然后就能用线性基搞了. 复习了一波线性基. #include<bits/stdc++.h> #define LL long lon ...

  2. python沙盒逃逸

    前言 最近遇到了很多python沙盒逃逸的题目(不知道是不是因为现在python搭的站多了--),实际使用时发现只会复制别人的payload是不够用的,于是自己来总结一波(顺带一提python沙盒逃逸 ...

  3. Wannafly挑战赛7 C - 小Q与氪金游戏

    题目描述 “为世界上所有的美好而战!”小Q同学最近沉迷“稳固3”,为了从最新的蛋池中抽出自己喜欢的角色卡,不惜氪下重金.在这个游戏中,氪一单可以得到x个宝石,而抽一次卡需要花费y个宝石,由于游戏策划十 ...

  4. Python之路【第二篇】: 列表、元组、字符串、字典、集合

    本文内容: -------------------------------------- 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表(list) 序列是Pyt ...

  5. 对java前后端分离的理解

    到目前为止,身为一个java后端开发人员的我, 在工作期间,无非就是ui设计页面,前端开发html,之后将做好的页面交给我,我负责后台逻辑一件html的页面渲染. 好好滴一个后台开发人员,莫名其妙的做 ...

  6. 【Leetcode】583. Delete Operation for Two Strings

    583. Delete Operation for Two Strings Given two words word1 and word2, find the minimum number of st ...

  7. code forces 505A

    Mr. Kitayuta's Gift Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64 ...

  8. HDU3585 Information Disturbing 树形dp+二分

    http://acm.split.hdu.edu.cn/showproblem.php?pid=3586   题意 : 给定一个带权无向树,要切断所有叶子节点和1号节点(总根)的联系,每次切断边的费用 ...

  9. [待码][BZOJ1858]SCOI2010序列操作 jzyzoj1655

    待码的线段树.....太长了看上去不是很想写 [ 什么破理由啊摔,不要脸 ] 嗯先水几道再写

  10. BZOJ3289[JZYZOJP2018]: Mato的文件管理 莫队+树状数组+离散化

            描述 Description     Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号.为了防止他人偷拷,这些资料都是加密过的, ...