使用Log4Net

来源:互联网 发布:档案数据异地备份制度 编辑:程序博客网 时间:2024/06/06 04:24

http://blog.csdn.net/csethcrm/article/details/52858683



使用Log4Net - 文件日志 


使用Log4Net - 文件日志 和 SqlServer日志


 使用Log4Net - 文件日志 和 Oracle日志



Log4Net.config 配置文件:


[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <configuration>  
  3.   
  4.   <!-- Register a section handler for the log4net section -->  
  5.   <configSections>  
  6.     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>  
  7.   </configSections>  
  8.   <log4net>  
  9.     <!-- Define some output appenders -->  
  10.   
  11.     <!--定义输出到文件中-->  
  12.     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">  
  13.       <!--定义文件存放位置-->  
  14.       <file value="log\\"/>  
  15.       <appendToFile value="true"/>  
  16.       <rollingStyle value="Date"/>  
  17.       <datePattern value="yyyyMM\\yyyyMMdd'.txt'"/>  
  18.       <staticLogFileName value="false"/>  
  19.       <param name="MaxSizeRollBackups" value="100"/>  
  20.       <layout type="log4net.Layout.PatternLayout">  
  21.         <!--<conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> : %newline%message%newline%newline" />-->  
  22.         <conversionPattern value="==== %date [%thread] %-5level ==== : %newline%message%newline%newline" />  
  23.       </layout>  
  24.     </appender>  
  25.   
  26.     <!--Sql server Appender -->  
  27.     <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.ADONetAppender">  
  28.       <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 -->  
  29.       <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 -->  
  30.       <bufferSize value="0" />  
  31.       <!--访问数据库驱动的引用-->  
  32.       <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />  
  33.       <!--数据库连接字符串-->  
  34.       <connectionString value="server=.;database=Log4Net;uid=sa;password=123.com;"/>  
  35.       <!--数据库执行的Sql语句-->  
  36.       <commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />  
  37.       <!-- 日志记录时间,RawTimeStampLayout为默认的时间输出格式 -->  
  38.       <parameter>  
  39.         <parameterName value="@log_date" />  
  40.         <dbType value="DateTime" />  
  41.         <layout type="log4net.Layout.RawTimeStampLayout" />  
  42.       </parameter>  
  43.       <!--线程号-->  
  44.       <parameter>  
  45.         <parameterName value="@thread" />  
  46.         <dbType value="String" />  
  47.         <size value="255" />  
  48.         <layout type="log4net.Layout.PatternLayout">  
  49.           <conversionPattern value="%thread" />  
  50.         </layout>  
  51.       </parameter>  
  52.       <!--日志等级  级别从低到高分别是:debug(调试),info(信息),warn(警告),error(错误),fatal(致命错误)-->  
  53.       <parameter>  
  54.         <parameterName value="@log_level" />  
  55.         <dbType value="String" />  
  56.         <size value="50" />  
  57.         <layout type="log4net.Layout.PatternLayout">  
  58.           <conversionPattern value="%level" />  
  59.         </layout>  
  60.       </parameter>  
  61.       <!--产生日志的类-->  
  62.       <parameter>  
  63.         <parameterName value="@logger" />  
  64.         <dbType value="String" />  
  65.         <size value="255" />  
  66.         <layout type="log4net.Layout.PatternLayout">  
  67.           <conversionPattern value="%logger" />  
  68.         </layout>  
  69.       </parameter>  
  70.       <!---->  
  71.       <parameter>  
  72.         <parameterName value="@message" />  
  73.         <dbType value="String" />  
  74.         <size value="4000" />  
  75.         <layout type="log4net.Layout.PatternLayout">  
  76.           <conversionPattern value="%message" />  
  77.         </layout>  
  78.       </parameter>  
  79.       <parameter>  
  80.         <parameterName value="@exception" />  
  81.         <dbType value="String" />  
  82.         <size value="2000" />  
  83.         <layout type="log4net.Layout.ExceptionLayout" />  
  84.       </parameter>  
  85.     </appender>  
  86.   
  87.     <!-- Setup the root category, add the appenders and set the default level -->  
  88.     <root>  
  89.       <level value="ALL" />  
  90.       <appender-ref ref="RollingLogFileAppender" />  
  91.       <appender-ref ref="AdoNetAppender_SqlServer" />  
  92.     </root>  
  93.   
  94.   </log4net>  
  95. </configuration>  




Program.cs代码,如下:

[csharp] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. using log4net;  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Text;  
  6. using System.Threading.Tasks;  
  7.   
  8. [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Content/Config/Log4Net.config", Watch = true)]  
  9. namespace Com.No1.Log4Net.SqlServer  
  10. {  
  11.     class Program  
  12.     {  
  13.         protected static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);  
  14.         static void Main(string[] args)  
  15.         {  
  16.             for (int i = 0; i < 101; i++)  
  17.             {  
  18.                 logger.Debug("Test" + i);  
  19.             }  
  20.         }  
  21.     }  
  22. }  




数据库创建表脚本:


[sql] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. CREATE TABLE [dbo].[Log4Net](  
  2.     [Id] [bigint] IDENTITY(1,1) NOT NULL,  
  3.     [Date] [datetime2](7) NULL,  
  4.     [Thread] [varchar](255) NULL,  
  5.     [Level] [varchar](255) NULL,  
  6.     [Logger] [varchar](255) NULL,  
  7.     [Message] [varchar](255) NULL,  
  8.     [Exception] [varchar](255) NULL,  
  9.  CONSTRAINT [PK_Log4Net] PRIMARY KEY CLUSTERED   
  10. (  
  11.     [Id] ASC  
  12. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ONON [PRIMARY]  
  13. ON [PRIMARY]  
  14.   
  15. GO  




结果,如下图:






测试时注意修改节点 : connectionString    修改为 自己测试环境的连接字符串 



注意点:

 <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 -->
 <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 -->

 <bufferSize value="0" /> 


如果测试环境设置成 100  ,则缓冲区 超过100条 消息才会 写入SqlServer库,这个很容易忘记,造成不必要的问题。测试环境 请设置成 0 


测试代码,点击下载!








使用Log4Net - 文件日志 


使用Log4Net - 文件日志 和 SqlServer日志


 使用Log4Net - 文件日志 和 Oracle日志



使用Log4Net - 文件日志 


使用Log4Net - 文件日志 和 SqlServer日志


 使用Log4Net - 文件日志 和 Oracle日志



Log4Net.config 配置文件:


[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <configuration>  
  3.   
  4.   <!-- Register a section handler for the log4net section -->  
  5.   <configSections>  
  6.     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>  
  7.   </configSections>  
  8.   <log4net>  
  9.     <!-- Define some output appenders -->  
  10.   
  11.     <!--定义输出到文件中-->  
  12.     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">  
  13.       <!--定义文件存放位置-->  
  14.       <file value="log\\"/>  
  15.       <appendToFile value="true"/>  
  16.       <rollingStyle value="Date"/>  
  17.       <datePattern value="yyyyMM\\yyyyMMdd'.txt'"/>  
  18.       <staticLogFileName value="false"/>  
  19.       <param name="MaxSizeRollBackups" value="100"/>  
  20.       <layout type="log4net.Layout.PatternLayout">  
  21.         <!--<conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> : %newline%message%newline%newline" />-->  
  22.         <conversionPattern value="==== %date [%thread] %-5level ==== : %newline%message%newline%newline" />  
  23.       </layout>  
  24.     </appender>  
  25.   
  26.     <!--Sql server Appender -->  
  27.     <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.ADONetAppender">  
  28.       <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 -->  
  29.       <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 -->  
  30.       <bufferSize value="0" />  
  31.       <!--访问数据库驱动的引用-->  
  32.       <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />  
  33.       <!--数据库连接字符串-->  
  34.       <connectionString value="server=.;database=Log4Net;uid=sa;password=123.com;"/>  
  35.       <!--数据库执行的Sql语句-->  
  36.       <commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />  
  37.       <!-- 日志记录时间,RawTimeStampLayout为默认的时间输出格式 -->  
  38.       <parameter>  
  39.         <parameterName value="@log_date" />  
  40.         <dbType value="DateTime" />  
  41.         <layout type="log4net.Layout.RawTimeStampLayout" />  
  42.       </parameter>  
  43.       <!--线程号-->  
  44.       <parameter>  
  45.         <parameterName value="@thread" />  
  46.         <dbType value="String" />  
  47.         <size value="255" />  
  48.         <layout type="log4net.Layout.PatternLayout">  
  49.           <conversionPattern value="%thread" />  
  50.         </layout>  
  51.       </parameter>  
  52.       <!--日志等级  级别从低到高分别是:debug(调试),info(信息),warn(警告),error(错误),fatal(致命错误)-->  
  53.       <parameter>  
  54.         <parameterName value="@log_level" />  
  55.         <dbType value="String" />  
  56.         <size value="50" />  
  57.         <layout type="log4net.Layout.PatternLayout">  
  58.           <conversionPattern value="%level" />  
  59.         </layout>  
  60.       </parameter>  
  61.       <!--产生日志的类-->  
  62.       <parameter>  
  63.         <parameterName value="@logger" />  
  64.         <dbType value="String" />  
  65.         <size value="255" />  
  66.         <layout type="log4net.Layout.PatternLayout">  
  67.           <conversionPattern value="%logger" />  
  68.         </layout>  
  69.       </parameter>  
  70.       <!---->  
  71.       <parameter>  
  72.         <parameterName value="@message" />  
  73.         <dbType value="String" />  
  74.         <size value="4000" />  
  75.         <layout type="log4net.Layout.PatternLayout">  
  76.           <conversionPattern value="%message" />  
  77.         </layout>  
  78.       </parameter>  
  79.       <parameter>  
  80.         <parameterName value="@exception" />  
  81.         <dbType value="String" />  
  82.         <size value="2000" />  
  83.         <layout type="log4net.Layout.ExceptionLayout" />  
  84.       </parameter>  
  85.     </appender>  
  86.   
  87.     <!-- Setup the root category, add the appenders and set the default level -->  
  88.     <root>  
  89.       <level value="ALL" />  
  90.       <appender-ref ref="RollingLogFileAppender" />  
  91.       <appender-ref ref="AdoNetAppender_SqlServer" />  
  92.     </root>  
  93.   
  94.   </log4net>  
  95. </configuration>  




Program.cs代码,如下:

[csharp] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. using log4net;  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Text;  
  6. using System.Threading.Tasks;  
  7.   
  8. [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Content/Config/Log4Net.config", Watch = true)]  
  9. namespace Com.No1.Log4Net.SqlServer  
  10. {  
  11.     class Program  
  12.     {  
  13.         protected static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);  
  14.         static void Main(string[] args)  
  15.         {  
  16.             for (int i = 0; i < 101; i++)  
  17.             {  
  18.                 logger.Debug("Test" + i);  
  19.             }  
  20.         }  
  21.     }  
  22. }  




数据库创建表脚本:


[sql] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. CREATE TABLE [dbo].[Log4Net](  
  2.     [Id] [bigint] IDENTITY(1,1) NOT NULL,  
  3.     [Date] [datetime2](7) NULL,  
  4.     [Thread] [varchar](255) NULL,  
  5.     [Level] [varchar](255) NULL,  
  6.     [Logger] [varchar](255) NULL,  
  7.     [Message] [varchar](255) NULL,  
  8.     [Exception] [varchar](255) NULL,  
  9.  CONSTRAINT [PK_Log4Net] PRIMARY KEY CLUSTERED   
  10. (  
  11.     [Id] ASC  
  12. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ONON [PRIMARY]  
  13. ON [PRIMARY]  
  14.   
  15. GO  




结果,如下图:






测试时注意修改节点 : connectionString    修改为 自己测试环境的连接字符串 



注意点:

 <!--bufferSize 为缓冲区大小,只有日志记录超设定值才会一块写入到数据库 -->
 <!-- 注意bufferSize 参数在测试环境建议设置为 0 ,在生产环境建议设置为100 -->

 <bufferSize value="0" /> 


如果测试环境设置成 100  ,则缓冲区 超过100条 消息才会 写入SqlServer库,这个很容易忘记,造成不必要的问题。测试环境 请设置成 0 


测试代码,点击下载!








使用Log4Net - 文件日志 


使用Log4Net - 文件日志 和 SqlServer日志


 使用Log4Net - 文件日志 和 Oracle日志

0 0
原创粉丝点击