基于Log4Net实现日志信息存储至数据库.docxVIP

基于Log4Net实现日志信息存储至数据库.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

1、引言

????在上位机开发中,日志记录是必不可少的,我们可以通过日志记录做日志分析及错误追踪。初学者会采用txt文本写入来实现日志保存,但是文本写入不是线程安全,当存在多个线程同时写入日志时,就会出现一些问题。Log4net库是.Net下一个非常优秀的开源日志记录组件,是一个帮助开发者将日志信息输出到各种目标(控制台、文件、数据库等)的工具。本节主要采用开源组件Log4Net来实现错误ERROR信息文本存储,并结合SQLite数据库,将日志INFO信息存储到数据库中,便于后续的查询。

2、开发准备

首先新建一个Windows窗体应用,取名为thinger.cn.Log4NetSQLitePro,UI界面设计如下所示:

通过Nuget添加Log4Net开源组件,如下所示:

通过Nuget添加SQLite组件,如下所示:

3、文本存储

一般情况下,我们可以将一些错误及异常信息存储在文本中,便于随时打开文件进行查询,文本存储将自动以天为单位,每天对应一个文件,步骤如下:

添加一个应用程序配置文件

项目右击添加新建项,项目类型选择应用程序配置文件,名称为log4net.config,如下所示:

配置文件编写

日志配置文件增加相关节点,如下所示:

配置文件规定了日志信息的相关属性、存储方式、日志内容格式等,配置信息如下所示:

其中,较为重要的是日志信息的格式,对应上面文件中的ConversionPattern,值为[%d]%n%m%n%n,每个占位符有对应的含义,如下所示:

字符格式

说明

%m(message)

输出的日志消息

%n(newline)

换行

%d(datetime)

输出当前语句运行的时刻

%r(runtime)

输出程序执行到当前消耗的毫秒数

%t(threadid)

当前语句所在的线程ID

%p(priority)

日志的当前日志级别

%c(class)

当前日志对象的名称

%L

输出语句所在的行号

%F

输出语句所在的文件名

%-10

最小长度为10,不够空格填充

配置文件属性中的复制到输出目录,设置为始终复制或如果较新则复制,如下图所示:

项目的AssemblyInfo.cs类中添加一行代码,如下所示:

添加一个LogHelper类,编写2个Error的方法,如下所示:

在ini文本存储按钮事件下,调用错误日志写入,如下所示:

执行完成后,在项目目录,Log\Error目录下,产生一条当天日志命名的文件,打开如下所示:

4、SQLite存储

日志信息存储到数据库的好处在于便于用户通过界面进行查询,这里采用开源免费数据库SQLite,其他关系型数据库,如SQLServer、mysql,原理都是一样的,具体步骤如下所示:

创建数据库及数据表

通过SQLiteStudio软件创建一个数据库,取名为Log4NetSQLite,执行以下脚本创建一个Log数据表:

将数据库文件复制到项目根目录下的DataBase文件夹中

修改log4net.config文件,增加数据库存储相关配置,如下所示:

bufferSize:日志缓存写入条数设置为0时只要有一条就立刻写到数据库

connectionString:SQLite指向的是数据库文件的绝对路径

LogHelper类中增加一个Info方法,如下所示:

在SQLite存储按钮事件下,调用Info日志写入,如下所示:

执行完成后,打开数据库,查看是否有相关记录:

5、实际应用

?????通过上面一系列的描述,相信大家对Log4Net的应用有了一些了解,Log4Net构建的日志系统是很多项目必备的一个功能,对项目开发、调试及后续维护都有着至关重要的作用。实际使用时,我们还可以将Log4Ne作为一个简单的数据存储工具,甚至可以使用Log4Net做多表多库存储,这些内容后续再给大家进行介绍。

文档评论(0)

外卖人-小何 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档