1. log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。

2. Log4net的结构如下:

log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及Layout(布局).

3. 配置节点是由logger和appender组成的. logger说明要使用哪些appender. appender说明日志怎样存储,如写入系统日志,文本,数据库,邮件等

appender节里有两个重要的子节点. filter负责过滤你想要得到的日志级别或包含特殊的字符串 layout负责日志输出的样式.

4.使用步驟:

4.1 加入參考,即加載log4net.dll

4.2 配置Config文件:

<configuration>

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

<log4net>
    <!--定义输出到文件中-->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <file value="log\\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" />
      <staticLogFileName value="false" />
      <param name="MaxSizeRollBackups" value="100" />
      <layout type="log4net.Layout.PatternLayout">
              <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="%newline %n記錄時間:%date %n對應的窗體:%logger property: [%property{NDC}] - %n記錄信息:%message%newline %n" />
      </layout>
    </appender>

<!--每条日志末尾的文字说明-->
    <root>
      <level value="ERROR" />
      <!--文件形式记录日志-->
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>

</configuration>

4.3 實體類

[assembly: log4net.Config.XmlConfigurator(Watch = true)]   //如何沒有這句,將看不到記錄日誌的文件夾

namespace HanKeDemo

{

class LogHelper

{

/// <summary>

/// 输出日志到Log4Net

/// </summary>

/// <param name="t"></param>

/// <param name="ex"></param>

#region static void WriteLog(Type t, Exception ex)

public static void WriteLog(Type t, Exception ex)

{

log4net.ILog log = log4net.LogManager.GetLogger(t);

log.Error("Error", ex);

}

#endregion

/// <summary>

/// 输出日志到Log4Net

/// </summary>

/// <param name="t"></param>

/// <param name="msg"></param>

#region static void WriteLog(Type t, string msg)

public static void WriteLog(Type t, string msg)

{

log4net.ILog log = log4net.LogManager.GetLogger(t);

log.Error(msg);

}

#endregion

/// <summary>

/// 操作系统的登录用户名

/// </summary>

/// <returns></returns>

public static string GetUserName()

{

try    {

return System.Environment.UserName.ToUpper();

}

catch

{

return "unkonwn";

}

}

}

}

4.4 調用實例

LogHelper.WriteLog(typeof(MainForm), strMsg);

log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具的更多相关文章

  1. Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console、file等。Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别。

    Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console.file等.Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别. ...

  2. 使用log4j使某些java类的日志信息输出到指定日志文件中

    Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI 组件.甚至是套接口服务器.NT 的事件记录器.UNIX Syslog ...

  3. 使用log4j将不同级别的日志信息输出到不同的文件中

    使用log4j.xml xml格式的配置文件可以使用filter. 例如想只把log4j的debug信息输出到debug.log.error信息输出到error.log,info信息输出到info.l ...

  4. java程序显示log日志信息的方法

    首先需要引入maven依赖 <dependency> <groupId>commons-logging</groupId> <artifactId>co ...

  5. c#简单的调试信息、日志信息输出

    public static void ErrorLog(string mssg) { string FilePath = "D:/logs/ErrorLog.txt"; try { ...

  6. 程序员的算法课(16)-B+树在数据库索引中的作用

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...

  7. 程序员必备,C#各类项目、开源项目插件资料收藏

    一.AOP框架     Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面 ...

  8. 【新阁教育】基于Log4Net实现日志信息双向存储(含源码)

    1.引言 在上位机开发中,日志记录是必不可少的,我们可以通过日志记录做日志分析及错误追踪.初学者会采用txt文本写入来实现日志保存,但是文本写入不是线程安全,当存在多个线程同时写入日志时,就会出现一些 ...

  9. Log4net入门(回滚日志文件篇)

    在上一篇Log4net(日志文件篇)中,我们使用"log4net.Appender.FileAppender"将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会 ...

随机推荐

  1. PHP 对象及其三大特性

    //面向过程 //类和对象 //对象:任何东西都可以成为对象,类实例化出来的东西 //类:对所有同类的对象抽象出来的东西 //info:code,name,sex,nation,birthday // ...

  2. hdu4185解题报告

    这里我居然能自己想想到怎么建图匹配,很是不容易... 题意:这里有一片油田,但是不是纯净的,有的地方是水,现在有一个捞石油的机器,但是这个机器捞的范围是固定的,是2*1的一个矩形大小,那么对于整个油田 ...

  3. XTU -1231 人生成就 (dp + 记录最优解的个数)

    http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1231 直接递推. 在保存最大值的时候同时保存有多少条到达最大值的路径,注意 ...

  4. C++ STL之priority_queue

    STL中的priority_queue(优先队列)是一种会按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序的容器,不同优先级的情况下,top()上永远是最高优先级的数据,其底层采用的 ...

  5. Scrum Agile

    Scrum Agile 迭代式增量软件开发,敏捷开发,源于丰田汽车的制造流程. HMC测试流程: 1.hmc改配置 2.上ui验证 3.还原hmm(有的需要,有的不需要) 4.addReferal,在 ...

  6. JVM工作原理

    作为一种阅读的方式了解下jvm的工作原理 JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JV ...

  7. 线程——委托InvokeRequired和Invoke

    C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用ne ...

  8. get 与post 的接收传值方式

    1.get方法接收值写法 string ad = Request["name"]; 2.post方法接收值写法 <%string a = Request.Form[" ...

  9. MVC+Ef项目(1) 项目的框架搭建

    一:首先我们来搭建最基本的项目框架,这里使用MVC3作为web项目,然后我们添加几个类库项目 最后的项目如下, 其中有一个 YouJiao.MvcWeb.Repository 实际就当做是 DAL层即 ...

  10. 【经验】Windows7、8、8.1 MSI安装错误Error Code 2502 & 2503 解决方法

    [因] 今天升级TortoiseSVN到1.8.8,出现问题:Error Code 2502 & 2503,一直不能安装成功. 上网一搜,国内没找到好的解决方法,在一个外文网上找到了方案,原链 ...