1,配置文件

如果放在Web.config文件中,要放在根节点<configuration>下。

但一般为了方便配置文件的修改,可以将配置文件独立于Web.config,而单独放在一个文本文件(.txt或.config都可以)中。

<?xml version="1.0"?>
<configuration>
  <log4net>
    <root>
      <level value="INFO" />
    </root>
    <logger name="ProjectA">
      <appender-ref   ref="ProjectAConfig"   />
    </logger>
    <logger name="ProjectB">
      <appender-ref   ref="ProjectBConfig"   />
    </logger>
    <logger name="ProjectC">
      <appender-ref   ref="ProjectCConfig"   />
    </logger>
    <appender name="ProjectAConfig" type="log4net.Appender.FileAppender" >
      <param name="File" value="log-file.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] \r"/>
      </layout>
    </appender>
    <appender name="ProjectBConfig" type="log4net.Appender.FileAppender" >
      <param name="File" value="log-file1.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] \r"/>
      </layout>
    </appender>
    <appender name="ProjectCConfig" type="log4net.Appender.RollingFileAppender" >
      <param name="File" type="" value="log" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />

  <!--<param name="RollingStyle" value="Composite" />-->

<param name="DatePattern" value="yyyyMMdd" />
      <param name="StaticLogFileName" value="false" />

<layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        <param name="Header" value="----------------------header--------------------------\r\n" />
        <param name="Footer" value="----------------------footer--------------------------\r\n" />
      </layout>
    </appender>
  </log4net>
</configuration>

2,读取配置文件生成ILog对象

a)  首先引入log4net.dll(下载地址:http://logging.apache.org/log4net/

b)  在项目的AssemblyInfo.cs文件里添加以下的语句:

[assembly:log4net.Config.DOMConfigurator(ConfigFile="filename",Watch=true/false)]

filename的值是配置文件的路径,Watch的值表示是否实时反映配置文件的修改。

或者动态加载

DOMConfigurator.[Configure/ConfigureAndWatch](new FileInfo("filename"));

Configure/ConfigureAndWatch的区别在于是否实时反映配置文件的修改。

在2.0及以后推荐将"DOMConfigurator"改为"XmlConfigurator",但是2.0及以后的Web项目是没 有"AssemblyInfo.cs"文件的,总不能在每个需要使用log4net的类中都加上面那二行代码。针对这种情况,网上也有二种解决办法:(1)新建类库继承log4,用 [assembly]方式加载配置,Web项目再引用类库;(2)在Global文件中动态加载配置。个人认为log4net提供的方法已经够用了,没有必要再去继承,推荐使用第(2)种:

在Global.asax的Application_Start方法中添加如下代码:
        System.IO.FileInfo infoF = new System.IO.FileInfo(Server.MapPath("log4net.txt"));
        log4net.Config.XmlConfigurator.ConfigureAndWatch(infoF);

3,在项目中使用log4net

添加自定义类

public static class Log4netBase
    {
        public static void Info(string message, Exception e)
        {
            log4net.ILog logger = log4net.LogManager.GetLogger("ProjectAConfig");
            logger.Info(message, e);
            logger.Logger.Repository.Shutdown(); 
        }
    }

4,相关问题

生成的log文件无法删除。解决办法:

A) 调用ILog对象的Logger.Repository.Shutdown();

B) 对于web工程,是由于log文件被IIS进程占用,可以关闭IIS以释放IIS对文件的占用;或者直接改变使用log4net的相关代码文件(如果在Global.asax中读取的log4net配置,直接在Global.asax文件中Ctrl+S即可),之后即可删除。我觉得这其实这两种方式都是关闭了一下IIS。

参考:http://kb.cnblogs.com/a/1526841/

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. C++ 基础知识复习(一)

    数据类型,常量与变量部分:(发现有些点竟然这么多年第一次发现) C++基本数据类型有哪些: 答:整型,浮点型,void型. 注:其他各种数据类型均是这三种类型的扩充,另外void类型在实际程序中经常用 ...

  2. 【xcode5的使用】

    layout: post title: "WWDC 2013 Session笔记 - Xcode5和ObjC新特性" date: 2013-06-13 10:05 comments ...

  3. oracle 11g RAC安装节点二执行结果错误CRS-5005: IP Address: 192.168.1.24 is already in use in the network

    [root@testdb11b ~]# /u01/app/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oraInvento ...

  4. Power BI for Office 365(一)移动端应用

    此篇来自于微软商业智能网站的官方博客团队发布的Power BI在线资料其中的一部分,完整版地址: http://office.microsoft.com/en-us/office365-sharepo ...

  5. Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)

    org.apache.jasper.JasperException:xxx.jsp(1,1) Page-encoding specified in XML prolog (UTF-8) is diff ...

  6. Docker on YARN在Hulu的实现

    这篇文章是我来Hulu这一年做的主要工作,结合当下流行的两个开源方案Docker和YARN,提供了一套灵活的编程模型,目前支持DAG编程模型,将会支持长服务编程模型. 基于Voidbox,开发者可以很 ...

  7. 浅谈Margin和Padding值设置成百分数的布局

    转自:问说网http://www.uedsc.com/discussion-margin-and-padding-values.html Margin和Padding是我们在网页设计经常使用到的CSS ...

  8. java基础-继承

    浏览以下内容前,请点击并阅读 声明 一个由其他类继承的类叫子类(也叫继承类,扩展类等),该类继承的类叫父类或超类.除了Object类意外,所有的类都有切仅有一个父类,如果一个类没有用extends关键 ...

  9. 洛谷 P1026 统计单词个数 Label:dp

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的单 ...

  10. ZeroMQ接口函数之 :zmq_connect - 由一个socket创建一个对外连接

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_connect zmq_connect(3)  ØMQ Manual - ØMQ/3.2.5 Name zmq_c ...