zoukankan      html  css  js  c++  java
  • [转]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的配置文件内容如下

    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </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线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
          </layout>
        </appender>
        <root>
          <level value="ERROR"/>
          <!--文件形式记录日志-->
          <appender-ref ref="RollingLogFileAppender"/>
        </root>
      </log4net>
    </configuration>

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

        Log4Net使用详解转载周公

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

       Log4Net使用详解续转载周公

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

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

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    namespace TestLog4Net
    {
       public  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 } }

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

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

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

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

     

     

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

    第三步:测试Log4Net

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

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace TestLog4Net
    {
        public partial class FormMain : Form
        {
            public FormMain()
            {
                InitializeComponent();
            }
    
            private void btnTest_Click(object sender, EventArgs e)
            {
                //第一种记录用法
                //(1)FormMain是类名称
                //(2)第二个参数是字符串信息
                LogHelper.WriteLog(typeof(FormMain), "测试Log4Net日志是否写入");
    
    
                //第二种记录用法
                //(1)FormMain是类名称
                //(2)第二个参数是需要捕捉的异常块
                //try { 
                
                //}catch(Exception ex){
    
                //    LogHelper.WriteLog(typeof(FormMain), ex);
    
                //}
              
    
            }
        }
    }

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

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

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

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

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

          下载log4net测试源码

    参考链接:柄棋先生的博文:《C#使用Log4Net记录日志

  • 相关阅读:
    kotlin中值范围
    kotlin中集合
    kotlin数据解构
    Java 8 Lambda 表达式
    kotlin 之内联函数
    kotlin之函数的范围和泛型函数
    kotlin函数的参数和返回值
    kotlin 之单表达式函数
    kotlin使用中辍标记法调用函数
    kotlin之函数的基本用法
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/4559968.html
Copyright © 2011-2022 走看看