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. SQLServer 2008以上误操作数据库恢复方法——日志尾部备份(转)

    问题: 经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了.人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题. 遇到这 ...

  2. 安装jdk java -version 不是自己所需要的版本

    原服务器安装有1.4的jdk,应用需要安装1.6的jdk.安装完毕后在/etc/profile里配置1.6jdk的环境变量后使用命令java -version显示还是原来的1.4的版本. 解决办法: ...

  3. (easy)LeetCode 219.Contains Duplicate II

    Given an array of integers and an integer k, find out whether there there are two distinct indices i ...

  4. Regional Changchun Online--Alisha’s Party

    Alisha's Party Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  5. Unable to open serial port /dev/ttyUSB0

    ubuntu12.04使用USB转串口时出现权限不够问题,如下 Unable to open serial port /dev/ttyUSB0 权限不够 解决办法: 通过增加udev规则来实现.步骤如 ...

  6. systemstate dump 介绍

    systemstate dump 介绍 By Janezhang-Oracle on 十二月 13, 2012 当数据库出现严重的性能问题或者hang了的时候,我们非常需要通过systemstate ...

  7. AIX配置时间服务器(NTP)

    xntpd是关于网络时间协议的守护进程,它遵循了因特网时间服务器的通用标准.在启动 xntpd 时, xntpd 会读取 /etc/ntp.conf 配置文件来确定网络中系统时钟服务器,以 ntp 服 ...

  8. iOS开发-文件管理(一)

    iOS开发-文件管理(一) 一.iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立.封闭.安全的空间,叫做沙盒.它一般存放着程序包文件(可执行文件).图片.音频.视频.pli ...

  9. 慧自文档:代替 Everything 来快速查找文件的,实现文件显示在文件夹的层次结构中

    1. 搜索功能和Everything一样快和强大 具有 Everything 搜索快.搜索功能强等优点, 解决了不能方便选择搜索哪个文件夹, 解决了不能同一个画面进行预览等问题 2.文件直接显示到文件 ...

  10. 百度富文本编辑器UEditor安装配置全过程

    网站开发时富文本编辑器是必不可少的,他可以让用户自行编辑内容的样式然后上传到后台!下面我们来介绍如何安装使用百度富文本编辑器 一.下载并且设置百度富文本编辑器的样式     你可以去百度UEditor ...