zoukankan      html  css  js  c++  java
  • Log4Net

    http://www.cnblogs.com/wangsaiming/archive/2013/01/11/2856253.html

    C#使用Log4Net记录日志

    第一步:下载Log4Net

               下载地址:http://logging.apache.org/log4net/download_log4net.cgi

               把下载的  log4net-1.2.11-bin-newkey解压后,如下图所示:

             

                双击bin文件夹

                 

                  双击net文件夹,选择针对.NET FramerWork的不同版本

                  

                 找到相应版本的log4net.dll

    第二步:应用Log4Net

              

              1、在项目中添加Log4Net.DLL的引用

                    开发环境:XP Professional Service Pack3

                   开发工具:VS2010旗舰版

              新建个WinForm应用程序,效果图如下仅为了简单演示

                

               窗体命名为:FormMain

              把Log4Net.Dll复制到项目的根目录下,然后添加Log4Net的引用

             

          添加引用之后

        2、配置Log4Net

           (1)新建一个应用程序配置文件app.config

                  

          (2)app.config的配置文件内容如下

           

    复制代码
     1 <?xml version="1.0"?>
     2 <configuration>
     3   <configSections>
     4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
     5   </configSections>
     6   <log4net>
     7     <!--定义输出到文件中-->
     8     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
     9       <!--定义文件存放位置-->
    10       <file value="log\"/>
    11       <appendToFile value="true"/>
    12       <rollingStyle value="Date"/>
    13       <datePattern value="yyyy\yyyyMM\yyyyMMdd'.txt'"/>
    14       <staticLogFileName value="false"/>
    15       <param name="MaxSizeRollBackups" value="100"/>
    16       <layout type="log4net.Layout.PatternLayout">
    17         <!--每条日志末尾的文字说明-->
    18         <!--输出格式-->
    19         <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
    20         <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
    21       </layout>
    22     </appender>
    23     <root>
    24       <level value="ERROR"/>
    25       <!--文件形式记录日志-->
    26       <appender-ref ref="RollingLogFileAppender"/>
    27     </root>
    28   </log4net>
    29 </configuration>
    复制代码

          

        每个参数的含义请参考如下链接:

        Log4Net使用详解转载周公

        http://blog.csdn.net/zhoufoxcn/article/details/2220533

       Log4Net使用详解续转载周公

       http://www.cnblogs.com/zhoufoxcn/archive/2010/11/23/2515616.html

    (3)新建一个LogHelper帮助类,为了在多个窗体中都进行调用,类内容如下:

      

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 [assembly: log4net.Config.XmlConfigurator(Watch = true)]
     7 namespace TestLog4Net
     8 {
     9    public  class LogHelper
    10     {
    11         /// <summary>
    12         /// 输出日志到Log4Net
    13         /// </summary>
    14         /// <param name="t"></param>
    15         /// <param name="ex"></param>
    16         #region static void WriteLog(Type t, Exception ex)
    17 
    18         public static void WriteLog(Type t, Exception ex)
    19         {
    20             log4net.ILog log = log4net.LogManager.GetLogger(t);
    21             log.Error("Error", ex);
    22         }
    23 
    24         #endregion
    25 
    26         /// <summary>
    27         /// 输出日志到Log4Net
    28         /// </summary>
    29         /// <param name="t"></param>
    30         /// <param name="msg"></param>
    31         #region static void WriteLog(Type t, string msg)
    32 
    33         public static void WriteLog(Type t, string msg)
    34         {
    35             log4net.ILog log = log4net.LogManager.GetLogger(t);
    36             log.Error(msg);
    37         }
    38 
    39         #endregion
    40 
    41 
    42     }
    43 }
    复制代码

    此时生成解决方案,可能会出现如下错误信息:

       未能找到类型或命名空间名称"log4net"(是否缺少using指令或程序集引用?)解决方法  

       当前上下文中不存在名称"log4net"解决方法

    此时可能有的人很纳闷,明明添加了引用怎么还提示找不到命名空间呢。解决这个问题很简单,右键项目选择属性

     

     

    将目标框架默认的.NET Framework4 Client Profile修改为.NET Framework4之后再重新生成解决方案就行了。

    第三步:测试Log4Net

               在按钮的事件中添加如下的代码

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Windows.Forms;
     9 
    10 namespace TestLog4Net
    11 {
    12     public partial class FormMain : Form
    13     {
    14         public FormMain()
    15         {
    16             InitializeComponent();
    17         }
    18 
    19         private void btnTest_Click(object sender, EventArgs e)
    20         {
    21             //第一种记录用法
    22             //(1)FormMain是类名称
    23             //(2)第二个参数是字符串信息
    24             LogHelper.WriteLog(typeof(FormMain), "测试Log4Net日志是否写入");
    25 
    26 
    27             //第二种记录用法
    28             //(1)FormMain是类名称
    29             //(2)第二个参数是需要捕捉的异常块
    30             //try { 
    31             
    32             //}catch(Exception ex){
    33 
    34             //    LogHelper.WriteLog(typeof(FormMain), ex);
    35 
    36             //}
    37           
    38 
    39         }
    40     }
    41 }
    复制代码

    运行项目点击Button按钮,在项目的根目录下就会看到log文件夹

    打开log文件夹就会看到里面以日期命名的文件夹一直打开可以看到如下图

    看到这个文件就说明log4net.dll的应用已经成功了。

    备注:文件夹的命名是根据你在app.config里面设置的file节点自动生成的,你可以根据自己的需要自己设置存放的路径和格式等。

           如果部分图片显示不出来,请用Chrome浏览器查看。

          下载log4net测试源码

  • 相关阅读:
    什么样的代码称得上是好代码?
    九年程序人生 总结分享
    Docker入门 第一课 --.Net Core 使用Docker全程记录
    阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
    Visual studio 2015 Community 安装过程中遇到问题的终极解决
    Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
    java 进销存 库存管理 销售报表 商户管理 springmvc SSM crm 项目
    Leetcode名企之路
    24. 两两交换链表中的节点
    21. 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/goto/p/4173982.html
Copyright © 2011-2022 走看看