Log4net使用笔记

 

编写人:CC阿爸

2013-10-29

  • 近来在处理项目时候,想将系统的操作日志以文本的形式记录下来,方便对系统操作记录进行追踪。

经过在网上搜索部分解决方案,大致可以归纳如下,并在当前环境下测试成功

首先说明一点的是,log4net解决的问题是提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中,一般来说我们只需要提供一个描述性的字符串,然后log4net就会自动提供有关运行时的一些信息。

Log4Net的版本仍是1.2.10,有.NET1.0和.NET1.1和.NET2.0版本,如果有正在使用高于.NET2.0开发的也不用担心,可以直接引用这个类库,像在.NET2.0中开发一样,它的网址是:http://logging.apache.org/log4net/

关于在Web中支持的问题

在我们开发项目时都会使用到config文件,可以在config文件中配置log4net。这一点Web项目和WinForm项目都是一样的。需要注意的是,因为在Web项目中一般以较低权限的角色来运行Web项目的,所以在使用文件型日志时要注意不要放在本项目根文件夹之外。

  • 在config文件中的配置

要使用log4net,首先要在config文件的<configSections>节点中增加配置(如果没有这个节点请手动增加),如下:

 <configSections> 

<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> 

</configSections> 

可将config文件配置在app.config中,也可以单独生成一个config文件,我在这里是单独使用了log4net.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <configSections>

    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>

  </configSections>

  <log4net>

    <root>

      <!--文件形式记录日志-->

     <!--<appender-ref ref="LogFileAppender" />-->    

      <!--控制台控制显示日志-->

     <<!--appender-ref ref="ConsoleAppender" />-->

      <!--Windows事件日志-->

     <!--<appender-ref ref="EventLogAppender" />-->

      <!--SQLite事件日志-->

      <!--<appender-ref ref="AdoNetAppender_SQLite" />-->

      <!--RollingFileAppender事件日志-->

      <!--<appender-ref ref="RollingFileAppender" />-->

      <!--RollingFileAppender事件日志,每天一个日志-->

      <appender-ref ref="RollingLogFileAppender_DateFormat" />

      <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉  -->

      <!--appender-ref ref="AdoNetAppender_Access" />-->

    </root>

    <appender name="RollingLogFileAppender_DateFormat" type="log4net.Appender.RollingFileAppender">

      <!--日志的路径--><!--

            <file value="log/log" />

      --><!--是否覆盖,默认是追加true--><!--

            <appendToFile value="true"/>

      --><!--文件名称--><!--

            <DatePattern value="yyyyMMdd &quot;.txt&quot;"></DatePattern>

      --><!--设置无限备份=- ,最大备份数为1000--><!--

            <maxSizeRollBackups value=""/>

      --><!--每个文件的最大20k--><!--

            <maximumFileSize value=""/>

      --><!--名称是否可以更改,为false为可以更改--><!--

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

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

            <layout type="log4net.Layout.PatternLayout">

              <param name="ConversionPattern" value="%d [%r] [%t] %-5p %c  - %m%n%n" />

            </layout>-->

      <file value="log.txt" />

      <DatePattern value="yyyyMMdd &quot;.txt&quot;"></DatePattern>

      <appendToFile value="true" />

      <rollingStyle value="Date" />

      <!--<datePattern value="yyyyMMdd-HHmm" />-->

      <datePattern value="yyyyMMdd" />

      <maximumFileSize value=""/>

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%date [%thread](%file:%line) %-5level %logger [%property{NDC}] - %message%newline" />

      </layout>

    </appender>

  </log4net>

</configuration>
  • 要在AssemblyInfo.cs 新增

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

或者:[assembly: log4net.Config.XmlConfigurator()]  (把log4net的配置在web的配置文件时)

之前根据一示例设置了以下后出现登录的问题:

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

就出现了调试能登录系统,但编译后不能登录,系统老提示网络设置错误。具体是因何原因引起。仍没有弄明白,还望大家知道的能告知。所以不要使用这种方法。

  • 程序中调用:
 //创建日志记录组件实例

                        ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

                        //ILog log = log4net.LogManager.GetLogger(typeof(Program));

                        ////记录错误日志

                        //log.Error("error", new Exception("在这里发生了一个异常,Error Number:" + random.Next()));

                        //记录严重错误

                        //log.Fatal("fatal", new Exception("在发生了一个致命错误,Exception Id:"+random.Next())); 

                        //记录一般信息

                        //log.Info("提示:系统正在运行");

                        //记录调试信息

                        //log.Debug("调试信息:debug");

                        //记录警告信息

                       log.Warn("警告:warn");

 

  • 系统根目录下就会生成(完成)

另:有一个有关Log4Net使用说明的博客可参考。

http://www.cnblogs.com/kissazi2/p/3389551.html

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

  1. [转载]Log4net学习笔记

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

  2. log4net学习笔记

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

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

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

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

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

  5. log4net 学习笔记

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

  6. log4net 使用笔记

    一.Log4net特征 1.自定义日志输出级别 Log4net将日志分为五个级别优先级从高到低依次:FATAL > ERROR > WARN > INFO > DEBUG,此外 ...

  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. Replace JSON.NET with ServiceStack.Text in ASP.NET Web API

    Because ServiceStack.Text performs much better I recently stumbled across a comparison of JSON seria ...

  2. sql server中的锁 事务锁 更新锁 保持锁 共享锁 你知道吗?

    锁定数据库的一个表 SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其 ...

  3. flask log

    import logging from logging.handlers import RotatingFileHandler from flask import Flask app = Flask( ...

  4. 如何让你的Python代码更加pythonic ?

    pythonic如果翻译成中文的话就是很python.很+名词结构的用法在中国不少. 以下为了简略,我们用P表示pythonic的写法,NP表示non-pythonic的写法,当然此P-NP非彼P-N ...

  5. [ZOJ 3839] Poker Face (递归)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3839 题目大意:画脸..每张脸是上一个脸倒过来加上眼睛.. 注意 ...

  6. (转)winform post 访问网站

    最近使用winform对webapi进行测试,搜集到园友的文章,记录下来供后续参考. 第一篇文章,原文地址http://www.cnblogs.com/Johnny_Z/archive/2012/02 ...

  7. MyEclipse 6.5 破解文件代码

    import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public cl ...

  8. xutils 框架

    1. android快速开发框架xUtils xUtils简介 xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵 ...

  9. multi2sim,booksim简介

    booksim是周期精确互连网络仿真器,设计用来配合"Principles and Practices of Interconnection Networks"课程教学,仿真器采用 ...

  10. 洛谷P2729 饲料调配 Feed Ratios

    P2729 饲料调配 Feed Ratios 36通过 103提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 农夫约翰从来只用调 ...