• C#使用Log4Net记录日志


    当你在开发程序的时候, 调试(debugging)和日志(logging)都是非常重要的工作。在应用中使用日志主要有三个目的

    l  监视代码中的变量的变化情况,把数据周期性地记录到文件中供其它应用进行统计分析工作

    l  跟踪代码运行的轨迹,作为日后审计的依据

    l  担当集成开发环境中的调试器,向文件或者控制台打印代码的调试信息

    而实现这些应用的常规方式是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。

    使用过程中遇到的问题:

      1:配置完之后,无法产生日志信息?  

      可能忘了添加第4步,第4步也可以放在你创建的日志帮助类的特性中。其中:ConfigFile="Log4Net.config"  可以为你新建的配置文件,也可以使用web.config:

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

      

        

    详细步骤如下:

    1. 首先从apache网站下载log4net, http://logging.apache.org/log4net/download_log4net.cgi 。我下的是最新版本 log4net-1.2.11-bin-newkey

    2. 将 in et4.0 eleaselog4net.dll 复制到你的项目中 。

    3. 将log4net.dll 添加引用到你的项目中。

    4. 添加如下内容到 assemblyinfo.cs:

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

     注意: ConfigFile 可以指定相对路径 和 绝对路径。 eg: /log/xxxx.log  或者 d://log//xxxx.log

    5.在项目中创建一个新的log4net的配置文件Log4Net.config。

    <?xml version="1.0" encoding="utf-8" ?>  
    <configuration>  
      <configSections>  
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />  
      </configSections>  
      
       <log4net debug="true">  
          <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">  
            <file value="applicationLog.log" /><!--file可以指定具体的路径 eg : d:\test.log。不指定的话log被生成在项目的bin/Debug 或者 bin/Release目录下 (web的项目 默认生成在根目录下)-->  
            <appendToFile value="true" />  
            <rollingStyle value="Size" />  
            <maxSizeRollBackups value="10" /><!--备份log文件的个数最多10个-->  
            <maximumFileSize value="2MB" /><!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->  
            <staticLogFileName value="true" />  
            <layout type="log4net.Layout.PatternLayout"> <!--指定log的格式-->  
              <conversionPattern value="[%date]  %thread -- %-5level -- %logger [%M] -- %message%newline" />  
            </layout>  
          </appender>  
      
          <root>  
            <level value="DEBUG" /><!--指定将此级别及以上的log打印到log文件中-->  
            <appender-ref ref="RollingLogFileAppender" />  
          </root>  
       </log4net>  
    </configuration> 

     

    注意:根据第4步的配置,应该把log4net的配置文件放到项目的bin/Debug 或者 bin/Release目录下,否则会出现找不到配置文件而无法创建logger对象。

    (web的项目,直接放在web项目的根目录下即可)

    6.在你的类中引入命名空间

      using log4net;  

    7. 在你的类中创建logger 实例 

      private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);  


    8. 运行你的项目,打出的log结果

     
      1. [2012-06-26 14:14:34,862]  1 -- DEBUG -- LogTest.Program [Main] -- this is the log4net log test.  
      2. [2012-06-26 14:14:34,877]  1 -- INFO  -- LogTest.Program [Main] -- this is the info..........................................  
      3. [2012-06-26 14:14:34,878]  1 -- INFO  -- LogTest.Program [print] -- this method is print()  
      4. [2012-06-26 14:14:34,878]  1 -- ERROR -- LogTest.Program [print] -- error test  

    1. 首先从apache网站下载log4net, http://logging.apache.org/log4net/download_log4net.cgi 。我下的是最新版本 log4net-1.2.11-bin-newkey

    2. 将 in et4.0 eleaselog4net.dll 复制到你的项目中 。

    3. 将log4net.dll 添加引用到你的项目中。

    4. 添加如下内容到 assemblyinfo.cs。

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [assembly: log4net.Config.XmlConfigurator(ConfigFile="Log4Net.config", Watch=true)]  

     注意: ConfigFile 可以指定相对路径 和 绝对路径。 eg: /log/xxxx.log  或者 d://log//xxxx.log

     

    5.在项目中创建一个新的log4net的配置文件Log4Net.config。

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0" encoding="utf-8" ?>  
    2. <configuration>  
    3.   <configSections>  
    4.     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />  
    5.   </configSections>  
    6.   
    7.    <log4net debug="true">  
    8.       <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">  
    9.         <file value="applicationLog.log" /><!--file可以指定具体的路径 eg : d:\test.log。不指定的话log被生成在项目的bin/Debug 或者 bin/Release目录下 (web的项目 默认生成在根目录下)-->  
    10.         <appendToFile value="true" />  
    11.         <rollingStyle value="Size" />  
    12.         <maxSizeRollBackups value="10" /><!--备份log文件的个数最多10个-->  
    13.         <maximumFileSize value="2MB" /><!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->  
    14.         <staticLogFileName value="true" />  
    15.         <layout type="log4net.Layout.PatternLayout"> <!--指定log的格式-->  
    16.           <conversionPattern value="[%date]  %thread -- %-5level -- %logger [%M] -- %message%newline" />  
    17.         </layout>  
    18.       </appender>  
    19.   
    20.       <root>  
    21.         <level value="DEBUG" /><!--指定将此级别及以上的log打印到log文件中-->  
    22.         <appender-ref ref="RollingLogFileAppender" />  
    23.       </root>  
    24.    </log4net>  
    25. </configuration>  

     

    注意:根据第4步的配置,应该把log4net的配置文件放到项目的bin/Debug 或者 bin/Release目录下,否则会出现找不到配置文件而无法创建logger对象。

    (web的项目,直接放在web项目的根目录下即可)

     

    6.在你的类中引入命名空间

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. using log4net;  

     

    7. 在你的类中创建logger 实例

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);  


    8. 运行你的项目,打出的log结果

    [plain] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [2012-06-26 14:14:34,862]  1 -- DEBUG -- LogTest.Program [Main] -- this is the log4net log test.  
    2. [2012-06-26 14:14:34,877]  1 -- INFO  -- LogTest.Program [Main] -- this is the info..........................................  
    3. [2012-06-26 14:14:34,878]  1 -- INFO  -- LogTest.Program [print] -- this method is print()  
    4. [2012-06-26 14:14:34,878]  1 -- ERROR -- LogTest.Program [print] -- error test  
  • 相关阅读:
    windows下一些启动服务的命令
    使用命令行启动服务
    无法向会话状态服务器发出会话状态请求转
    SQLServer跨服务器连接的多种方法
    Response.Buffer = True
    UpdatePanel和Jquery冲突
    <iframe>标签自适应高度和宽度
    java判断获取到的中文字符串是否乱码
    MMC不能打开文件C:\WINDOWS\SYSTEM32\inetsrv\iis.msc,如何解决?
    在.NET中用excel导出(概要)
  • 原文地址:https://www.cnblogs.com/lxhbky/p/5900766.html
Copyright © 2020-2023  润新知