log4net详细配置:
http://logging.apache.org/log4net/
本文描述如有错误,以官网的说明为准;p

一:先来看看log4net中的几个概念:

1. log4net继承机制

log4net通过logger的名字与"."符号来体现继承层次,类似于c#的命名空间,例如:

var loggerA=LogManager.GetLogger("a");
var loggerB=LogManager.GetLogger("a.b");

那么,loggerB继承了loggerA,如果没有为loggerB指定appender或者level,将会使用loggerB的appender或者level. by the way,另一个获取logger的方法:GetLogger(typeof(SomeClass))会新建一个名为"SomeClass"的logger

2. appender

appender:负责将log写入何处。log4net中内置了很多种appnder:
FileAppender:将log写入文件中。
RollingFileAppender:将log写入到文件中,并可以按某些条件(例如按日期或者按文件大小)来划分不同文件,例如希望每天一个log文件,或者每个文件1M等等。
AdoNetAppender:将log通过ado.net写入到数据库。
ConsoleAppender:将log输出到console中。
log4net中内置了非常多的appender,详细请参考:
http://logging.apache.org/log4net/release/manual/introduction.html

3. Level

level是指日志级别,日志级别从低到高分为:
ALL
DEBUG --调试
INFO --信息
WARN --警告
ERROR --错误
FATAL --致命
OFF

一个logger只会记录级别比这个logger设定的级别要大的log,例如,一个logger的级别为ERROR(如何设定logger的日志级别会在下面提及),当 logger.Info("this's a log of info level")时,log将不会被记录,因为logger以Info()方法记录该log,意味着该log的级别是INFO,但logger的级别是ERROR,大于INFO,所以不会记录该log。但logger.Error("this's a log of error level")或者logger.Fatal("this's a log of fatal level")时,则会记录该log。

4. Filter

filter代表appender的过滤器,可以设置appender以某种方式过滤(不记录)日志。例如,LevelMatchFilter用于设定只记录某个级别的日志,StringMatchFilter用于设定只记录日志里包含某些字眼的日志。
如何设置Filter将会在下面提及,但更多的Filter用法请参考:http://logging.apache.org/log4net/release/manual/configuration.html

5. Layout

layout用于设置日志的排版格式。(这个通常用默认的,比较少自己配置,不懂~ 具体请看:http://logging.apache.org/log4net/release/manual/configuration.html

二: 如何配置log4net

log4net支持在代码中设定logger(appender,level,filter等),但推荐通过配置文件来进行配置。
配置文件的方式也分为2种:

1.在项目的配置文件中(web.config,app.config)中添加配置节来实现

2.指定一个独立的配置文件的方式来配置。

在项目配置文件中进行配置和使用步骤:

a.先在项目配置文件中定义一个配置节:

  <configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

b.然后在项目配置文件中添加"log4net"配置节:

<log4net>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogError\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n " />
</layout>
</appender>
<root>
<level value="ERROR" />
<appender-ref ref="ErrorAppender" />
</root>
</log4net>

c.调用 XmlConfigurator.Configure()方法启用配置,或者使用[assembly: log4net.Config.XmlConfigurator()] 特性来启用配置(log4net推荐使用程序集特性的方式来进行配置。只需要在项目的Properties/AssemblyInfo.cs中添加该程序集特性即可)

指定一个独立的配置文件步骤:

a.在项目根目录中(根目录是默认位置,但可以指定其他位置,这里不作说明;p)新建一个任意文件名的xml文件,例如"log4net.config"。
b.在该xml文件中进行配置,xml文件的内容和上一种配置方式的log4net配置节一样,只是单独放到一个xml文件中而已。
c.调用XmlConfigurator.ConfigureAndWatch()方法启用配置,或者使用[assembly: log4net.Config.XmlConfigurator()] 特性来启用配置。

三:配置文件大概解释(只是常用的,大概的描述,具体的请参考官网)

<log4net>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogError\\" /> <!--基于应用的根目录-->
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd.log" /><!--日志文件的风格,例如这个就是'2017-02-21.log'-->
<param name="RollingStyle" value="Date" />
<param name="Encoding" value="UTF-8" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n " /><!--日志内容的显示排版风格,但不好意思,各个参数我也没去研究是什么意思,我自己都是用惯这样的排版-->
</layout>
</appender>
<appender name="MyConsoleAppender" type="log4net.Appender.ConsoleAppender" ><!--这里定义一个名叫"MyConsoleAppender"的,类型为ConsoleAppender的appender,可以被下边的logger所使用-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
<filter type="log4net.Filter.StringMatchFilter"><!--过滤器,匹配包含某些字符的log-->
<stringToMatch value="stringToMatch" />
</filter>
</appender>
<root><!--设定log4net继承层次中的根logger,相似于c#中的object,所有的logger会继承root的配置-->
<level value="INFO" />
<appender-ref ref="ConsoleAppender" /><!--指定根logger默认使用"MyConsoleAppender"-->
</root>
<logger name="SomeLoggerFoo"><!--未某个具体名字的logger进行配置,例如在代码中 LogManager.GetLogger("SomeLoggerFoo"),那么该logger就会使用这个配置-->
<level value="INFO" />
<appender-ref ref="ConsoleAppender" /> <!--指定使用哪个appnder-->
</logger>
<logger name="myErrorAppender">
<level value="ERROR" />
<appender-ref ref="ErrorAppender" />
</logger>
</log4net>

以上是log4net比较粗略的配置和使用说明,如果需要更详细的信息,请参考log4net官网:

http://logging.apache.org/log4net/

水平有限难免有误敬请指正

Log4net配置与使用简要说明的更多相关文章

  1. Common.Logging log4net Common.Logging.Log4Net 配置

    1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-r ...

  2. Log4Net 配置StmpAppender

    目录 Log4Net 配置StmpAppender    1 1.前言    1 2.详细配置    1 1.StmpAppender配置    1 2.Root 配置    2 3.更多选项     ...

  3. C# Log4Net配置

    Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...

  4. MVC Log4Net 配置

    1.引用log4net.dll 2.在项目根目录下增加log4.config文件 <?xml version="1.0"?> <configuration> ...

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

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

  6. C# 日志系统 log4net 配置及使用

    1.引用Dll 版本是:1.2.10.0,下载Dll 2.Web.config文件配置 <?xml version="1.0" encoding="utf-8&qu ...

  7. JWT+Log4net配置与使用

    Log4net的优点        log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.程序运行过 ...

  8. log Log4NET配置

    Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过 日志查看系统的运行过程,从而发现系统的问题.日志的作用:将 ...

  9. NHibernate的调试技巧和Log4Net配置

    1.查看nhibernate写在控制台里的sql语句 在配置文件中有这么个选项,假如把它设置为true,nhibernate会把执行的sql显示在控制台上. <property name=&qu ...

随机推荐

  1. STM8的中断系统以及外部中断详解

    STM8具有最多32的中断系统,在中断的处理上类似于cortexm系列的芯片,首先是每个中断的向量都是固化在系统内部的,用户需要向相应的中断向量flash位置写入中断处理函数,其二,每个中断向量都具有 ...

  2. 前端轻量级web进度条 – Nprogress & nanobar

    转载:http://www.xuanfengge.com/front-end-nprogress-and-lightweight-web-progress-bar-nanobar.html 前言 进度 ...

  3. Unity3D ——强大的跨平台3D游戏开发工具(一)

    众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎.在现有的版本中,其强大的游戏制作功能已 经达到让人瞠目结舌的地步.尤其是它在3.0版本里面制作的那款 ...

  4. func 和action 委托的使用

    func 可以带返回值,action  不带返回值 平时我们如果要用到委托一般都是先声明一个委托类型,比如: private delegate string Say(); string说明适用于这个委 ...

  5. 初识Google code jam平台

    为了熟悉一下code jam的平台,今天简单试了一下,做了一下Qualification Round Africa 2010的三道题目,都是很基础的. A题:给一个数n和一系列数a[],从a[]中找出 ...

  6. oracle系列--级联删除和级联更新

    必须声明:此博客转载于Oracle外键级联删除和级联更新http://www.2cto.com/database/201507/417496.html 鉴于此前收藏的精彩博客无料被删除了,很是痛心,所 ...

  7. C#、C++用GDAL读shp文件(转载)

    C#.C++用GDAL读shp文件 C#用GDAL读shp文件 (2012-08-14 17:09:45) 标签: 杂谈 分类: c#方面的总结 1.目前使用开发环境为VS2008+GDAL1.81 ...

  8. Javascript正则表达式完全学习手册

    正则表达式看起来很吓人,不容易让人亲近,但它的确很好用,可以很大程度上提高你的开发效率.本文从零开始介绍了应如何学习正则表达式.文中范例主要为JavaScript. 正则表达式可以很恐怖,真得很恐怖. ...

  9. 使用(Drawable)资源———AnimationDrawable资源

    AnimationDrawable代表一个动画. 下面以补间动画为例来介绍如何定义AnimationDrawable资源,定义补间动画的XML资源文件已<set.../>元素作为根元素,该 ...

  10. STL内存管理

    1. 概述 STL Allocator是STL的内存管理器,也是最低调的部分之一,你可能使用了3年stl,但却不知其为何物. STL标准如下介绍Allocator the STL includes s ...