关于使用log4net.dll记录日志的方法大全

在软件系统中难免会用到日志记录的需求,接下来我将给大家详细介绍下Log4net写入到文件、sqlserver和oracle的方法。

首先,我们把Log4net.dll添加到引用中。

第二步,在config文件中编写log4net的相关配置,下面将详细介绍写入文件配置、写入sqlserver配置和写入oracle配置

1.文件记录

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <configuration>  
  3.   <configSections>  
  4.     <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>  
  5.   </configSections>  
  6.   <appSettings>  
  7.   </appSettings>  
  8.   <log4net>  
  9.     <!--定义输出到文件中-->  
  10.     <appender name="LogFileAppender" type="log4net.Appender.FileAppender">  
  11.       <!--定义文件存放位置-->  
  12.       <file value="LogInfo.txt" />  
  13.       <appendToFile value="true" />  
  14.       <layout type="log4net.Layout.PatternLayout">  
  15.         <!--每条日志末尾的文字说明-->  
  16.         <footer value="" />  
  17.         <!--输出格式-->  
  18.         <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->  
  19.         <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level - 描述:%message%newline" />  
  20.       </layout>  
  21.     </appender>  
  22.     <appender name="LogFileAppender_Size" type="log4net.Appender.RollingFileAppender">  
  23.       <file value="LogInfo.txt" />  
  24.       <appendToFile value="true" />  
  25.       <rollingStyle value="Size" />  
  26.       <maxSizeRollBackups value="10" />  
  27.       <maximumFileSize value="1000KB" />  
  28.       <staticLogFileName value="true" />  
  29.       <layout type="log4net.Layout.PatternLayout">  
  30.         <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level - 描述:%message%newline" />  
  31.       </layout>  
  32.     </appender>  
  33.     <appender name="LogFileAppender_Date" type="log4net.Appender.RollingFileAppender">  
  34.       <file value="LogInfo.txt" />  
  35.       <appendToFile value="true" />  
  36.       <rollingStyle value="Date" />  
  37.       <datePattern value="yyyyMMdd" />  
  38.       <layout type="log4net.Layout.PatternLayout">  
  39.         <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level - 描述:%message%newline" />  
  40.       </layout>  
  41.     </appender>  
  42.   
  43.     <root>  
  44.         <!--日志记录方式-->  
  45.       <appender-ref ref="LogFileAppender_Size" />  
  46.     </root>  
  47.   </log4net>  
  48. </configuration>  
2 .sqlserver记录

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <configuration>  
  3.     <configSections>  
  4.         <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>  
  5.     </configSections>  
  6.     <appSettings>  
  7.     </appSettings>  
  8.     <log4net>  
  9.         <appender name="AdoNetAppender_SQLServer" type="log4net.Appender.AdoNetAppender">  
  10.             <!--设置缓存区大小  
  11.           1表明有一条日志就要写入  
  12.           如果10就表示日志到达10条时一起写入  
  13.       -->  
  14.             <bufferSize value="1" />  
  15.             <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />  
  16.             <connectionString value="data source=192.168.0.108;initial catalog=RTData;integrated security=false;persist security info=True;User ID=sa;Password=sa" />  
  17.             <commandText value="INSERT INTO LogInfo ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />  
  18.             <parameter>  
  19.                 <parameterName value="@log_date" />  
  20.                 <dbType value="DateTime" />  
  21.                 <layout type="log4net.Layout.RawTimeStampLayout" />  
  22.             </parameter>  
  23.             <parameter>  
  24.                 <parameterName value="@thread" />  
  25.                 <dbType value="String" />  
  26.                 <size value="255" />  
  27.                 <layout type="log4net.Layout.PatternLayout">  
  28.                     <conversionPattern value="%thread" />  
  29.                 </layout>  
  30.             </parameter>  
  31.             <parameter>  
  32.                 <parameterName value="@log_level" />  
  33.                 <dbType value="String" />  
  34.                 <size value="50" />  
  35.                 <layout type="log4net.Layout.PatternLayout">  
  36.                     <conversionPattern value="%level" />  
  37.                 </layout>  
  38.             </parameter>  
  39.             <parameter>  
  40.                 <parameterName value="@logger" />  
  41.                 <dbType value="String" />  
  42.                 <size value="255" />  
  43.                 <layout type="log4net.Layout.PatternLayout">  
  44.                     <conversionPattern value="%logger" />  
  45.                 </layout>  
  46.             </parameter>  
  47.             <parameter>  
  48.                 <parameterName value="@message" />  
  49.                 <dbType value="String" />  
  50.                 <size value="4000" />  
  51.                 <layout type="log4net.Layout.PatternLayout">  
  52.                     <conversionPattern value="%message" />  
  53.                 </layout>  
  54.             </parameter>  
  55.             <parameter>  
  56.                 <parameterName value="@exception" />  
  57.                 <dbType value="String" />  
  58.                 <size value="2000" />  
  59.                 <layout type="log4net.Layout.ExceptionLayout" />  
  60.             </parameter>  
  61.         </appender>  
  62.      
  63.         <!--定义日志的输出媒介-->  
  64.         <root>  
  65.       <appender-ref ref="AdoNetAppender_SQLServer" />  
  66.         </root>  
  67.     </log4net>  
  68. </configuration>  
在配置文件 connectionString 属性中配置好sqlserver的连接字符串,
还要在sqlserver数据库中建立一个跟配置文件中同表名、同表结构的日记表。

3.Oracle记录

[html]  view plain copy
  1. <?xml version="1.0"?>  
  2. <configuration>  
  3.     <configSections>  
  4.         <section name="extnet" type="Ext.Net.GlobalConfig" requirePermission="false"/>  
  5.         <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>  
  6.     </configSections>  
  7.     <appSettings>  
  8.         <add key="ChartImageHandler" value="storage=file;timeout=20;"/>  
  9.     </appSettings>  
  10.       
  11.     <!--  
  12.     用log4net记录日志信息到Oracle数据库中  
  13.    要在数据库中新建表  
  14.    create table BASE_ERRORLOG  
  15. (  
  16.   LOG_DATE DATE,  
  17.   MESSAGE  VARCHAR2(4000)  
  18. )  
  19.     -->  
  20.     <log4net>  
  21.         <appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">  
  22.             <connectionString value="Data Source=GS_DB;Persist Security Info=True;User ID=YPQ_SJ;Password=Sg58895168;Min Pool Size=5;Max Pool Size=50;"/>  
  23.             <connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>  
  24.             <commandText value="INSERT INTO Base_ErrorLog (LOG_DATE,MESSAGE) VALUES (:log_date,:message)"/>  
  25.             <bufferSize value="1"/>  
  26.             <!--定义各个参数-->  
  27.             <parameter>  
  28.                 <parameterName value=":log_date"/>  
  29.                 <dbType value="DateTime"/>  
  30.                 <layout type="log4net.Layout.RawTimeStampLayout"/>  
  31.             </parameter>  
  32.             <parameter>  
  33.                 <parameterName value=":message"/>  
  34.                 <dbType value="String"/>  
  35.                 <size value="4000"/>  
  36.                 <layout type="log4net.Layout.PatternLayout">  
  37.                     <conversionPattern value="%message"/>  
  38.                 </layout>  
  39.             </parameter>  
  40.               
  41.         </appender>  
  42.         <root>  
  43.       <appender-ref ref="AdoNetAppender_Oracle" />  
  44.         </root>  
  45.     </log4net>  
  46.       
  47. </configuration>  
在配置文件 connectionString 属性中配置好oracle的连接字符串,
还要在oracle数据库中建立一个跟配置文件中同表名、同表结构的日记表。


具体使用那种记录方式,自己选定。

第三步,新建一个Logger.cs类

[csharp]  view plain copy
  1. using System;  
  2. using System.Reflection;  
  3. using log4net;  
  4.   
  5. //注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息,如不指定配置文件路径,则按以下方式获取  
  6. //如果是WebForm,则从web.config中读取相关信息  
[csharp]  view plain copy
  1. //ConfigFile是你写log4net配置的地方  
  2. [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]  
  3. namespace com.yitongyu.common.log  
  4. {  
  5.     /// <summary>  
  6.     /// 日志记录器  
  7.     /// </summary>  
  8.     public static class Logger  
  9.     {  
  10.         private static ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);  
  11.   
  12.         /// <summary>  
  13.         /// 获取当前 Ilog 对象  
  14.         /// </summary>  
  15.         public static ILog GetILog  
  16.         {  
  17.             get  
  18.             {  
  19.                 return log;  
  20.             }  
  21.         }  
  22.         /// <summary>  
  23.         /// 记录错误日志  
  24.         /// </summary>  
  25.         /// <param name="message"></param>  
  26.         /// <param name="ex"></param>  
  27.         public static void Error(object message, Exception ex)  
  28.         {  
  29.             log.Error(message, ex);  
  30.         }  
  31.         /// <summary>  
  32.         /// 记录严重错误  
  33.         /// </summary>  
  34.         /// <param name="message"></param>  
  35.         /// <param name="ex"></param>  
  36.         public static void Fatal(object message, Exception ex)  
  37.         {  
  38.             log.Fatal(message, ex);  
  39.         }  
  40.         /// <summary>  
  41.         /// 记录一般信息  
  42.         /// </summary>  
  43.         /// <param name="message"></param>  
  44.         public static void Info(object message)  
  45.         {  
  46.             log.Info(message);  
  47.         }  
  48.         /// <summary>  
  49.         /// 记录调试信息  
  50.         /// </summary>  
  51.         /// <param name="message"></param>  
  52.         public static void Debug(object message)  
  53.         {  
  54.             log.Debug(message);  
  55.         }  
  56.         /// <summary>  
  57.         /// 记录警告信息  
  58.         /// </summary>  
  59.         /// <param name="message"></param>  
  60.         public static void Warn(object message)  
  61.         {  
  62.             log.Warn(message);  
  63.         }  
  64.     }  
  65. }  


第四步,调用日志记录方法

[html]  view plain copy
  1. Logger.Erroe("错误信息",null);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值