Log4Net日志记录两种方式
2014-08-19 18:18
274 查看
本文转载:http://www.cnblogs.com/wolf-sun/p/3347373.html#3009010
简介
log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
log4net是Apache软件基金会Apache Logging Services工程的一部分。Apache日志服务工程致力于为程序调试和审计提供跨语言的日志服务。(f:百度百科)
原理
Log4net是基于.NET开发的一款记录日志开源组件。它通过一套XML配置的日志引擎,将日志分不同的等级,分别是:FATAL 、 ERROR、 WARN、 INFO 、 DEBUG、ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求),缺省为DEBUG,前五个是不是很熟悉?可以看到和我们平常在调试应用程序的出错有点类似,在编译器中也会留下如错误、警告之类的提示信息,它们的错误级别在不断的降低。
log4net开源项目结构如图所示:
结果
案例二:日志记入数据库
记入数据库的方式和记入文件的方式大同小异,主要区别在配置文件,其他步骤相同,记入数据库的配置文件log4net.config如下:
创建记录日志的数据表:
测试
采用上面的测试方法。
结果
结语
项目中经常用到的两种方式在这里做一下总结。其他方式,用到了再补上。
简介
log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
log4net是Apache软件基金会Apache Logging Services工程的一部分。Apache日志服务工程致力于为程序调试和审计提供跨语言的日志服务。(f:百度百科)
原理
Log4net是基于.NET开发的一款记录日志开源组件。它通过一套XML配置的日志引擎,将日志分不同的等级,分别是:FATAL 、 ERROR、 WARN、 INFO 、 DEBUG、ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求),缺省为DEBUG,前五个是不是很熟悉?可以看到和我们平常在调试应用程序的出错有点类似,在编译器中也会留下如错误、警告之类的提示信息,它们的错误级别在不断的降低。
log4net开源项目结构如图所示:
1 protected void btnShowTime_Click(object sender, EventArgs e) 2 { 3 log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 4 myLogger.Warn("这是一个警告日志"); 5 myLogger.Info("单击了按钮"); 6 myLogger.Debug("用Log4Net写入数据库日志"); 7 myLogger.Error("这是一个错误日志"); 8 myLogger.Fatal("这是一个致命的错误日志"); 9 try 10 { 11 ILog logger = LogManager.GetLogger("LogRecord"); 12 logger.Debug("用Log4Net写入数据库日志"); 13 int x = 5; 14 int y = 0; 15 Response.Write(x / y); 16 } 17 catch (Exception ex) 18 { 19 myLogger.Error(ex); 20 } 21 finally 22 { 23 lblShow.Text = DateTime.Now.ToLongTimeString()+":操作日志已记录完成"; 24 } 25 }
结果
案例二:日志记入数据库
记入数据库的方式和记入文件的方式大同小异,主要区别在配置文件,其他步骤相同,记入数据库的配置文件log4net.config如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <configuration> 3 <configSections> 4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 5 </configSections> 6 <!--Log4net Begin--> 7 <log4net> 8 <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> 9 <bufferSize value="1" /> 10 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 11 <connectionString value="SERVER=127.0.0.1;DATABASE=TestDataBase;UID=sa;PWD=123456;Connect Timeout=15;" /> 12 <commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 13 <parameter> 14 <parameterName value="@log_date" /> 15 <dbType value="DateTime" /> 16 <layout type="log4net.Layout.RawTimeStampLayout" /> 17 </parameter> 18 <parameter> 19 <parameterName value="@thread" /> 20 <dbType value="String" /> 21 <size value="100" /> 22 <layout type="log4net.Layout.PatternLayout"> 23 <conversionPattern value="%t" /> 24 </layout> 25 </parameter> 26 <parameter> 27 <parameterName value="@log_level" /> 28 <dbType value="String" /> 29 <size value="200" /> 30 <layout type="log4net.Layout.PatternLayout"> 31 <conversionPattern value="%p" /> 32 </layout> 33 </parameter> 34 <parameter> 35 <parameterName value="@logger" /> 36 <dbType value="String" /> 37 <size value="500" /> 38 <layout type="log4net.Layout.PatternLayout"> 39 <conversionPattern value="%logger" /> 40 </layout> 41 </parameter> 42 <parameter> 43 <parameterName value="@message" /> 44 <dbType value="String" /> 45 <size value="3000" /> 46 <layout type="log4net.Layout.PatternLayout"> 47 <conversionPattern value="%m" /> 48 </layout> 49 </parameter> 50 <parameter> 51 <parameterName value="@exception" /> 52 <dbType value="String" /> 53 <size value="4000" /> 54 <layout type="log4net.Layout.ExceptionLayout" /> 55 </parameter> 56 </appender> 57 <!-- setup the root category, add the appenders and set the default level --> 58 <root> 59 <level value="WARN"/> 60 <level value="INFO"/> 61 <level value="DEBUG"/> 62 <level value="FINE"/> 63 <appender-ref ref="ADONetAppender" /> 64 </root> 65 <!-- specify the level for some specific categories --> 66 <logger name="iNotes"> 67 <level value="WARN"/> 68 <level value="INFO"/> 69 <level value="DEBUG"/> 70 <level value="FINE"/> 71 <appender-ref ref="ADONetAppender"/> 72 </logger> 73 <logger name="StellaLogger"> 74 <level value="ALL"/> 75 <appender-ref ref="AdoNetAppender" /> 76 </logger> 77 </log4net> 78 <!--Log4net End--> 79 </configuration>
创建记录日志的数据表:
1 CREATE TABLE [dbo].[ErrorLog]( 2 3 [nId] [bigint] IDENTITY(1,1) NOT NULL, 4 5 [dtDate] [datetime] NOT NULL, 6 7 [sThread] [varchar](100) NOT NULL, 8 9 [sLevel] [varchar](200) NOT NULL, 10 11 [sLogger] [varchar](500) NOT NULL, 12 13 [sMessage] [varchar](3000) NOT NULL, 14 15 [sException] [varchar](4000) NULL)
测试
采用上面的测试方法。
结果
结语
项目中经常用到的两种方式在这里做一下总结。其他方式,用到了再补上。
相关文章推荐
- Log4Net日志记录两种方式(转)
- Log4Net日志记录两种方式
- Log4Net日志记录两种方式
- Log4Net日志记录两种方式
- 网站访问日志记录的两种方式
- Log4net日志使用教程-控制台、文本、数据库三种记录方式
- log4net按等级多种方式记录日志
- Laravel两种记录日志的两种方式
- 使用log4net记录日志到MySQL中 (转)
- [翻译]如何使用log4net进行日志记录
- 日志记录组件[Log4net]详细介绍(转)
- Log4net日志记录组件-学习心得
- log4net 各种等级的消息 输出到不同日志文件的 配置文件方式
- 日志记录组件[Log4net]详细介绍
- 日志记录组件[Log4net]详细介绍(转)
- 在.Net程序中使用log4net记录日志(示例)
- 日志记录组件[Log4net]详细介绍(转)
- 实体模型日志记录的两种方法
- 日志记录组件[Log4net]简介
- 用Log4Net将日志信息记录到数据库