c#物联网_基于C#实现日志记录与SQL SERVER的双向存储工控数字化之旅

↑ 点击上方

“智能制造之家”

关注我们

写在前面

我们在做一些PLC设备联网改造、SCADA项目、MES项目等的时候,我们经常需要做日志记录,这样便于后续做日志分析及错误追踪。比如前面我们介绍到的一些项目:

从零开始基于西门子PLC用C#通过OPC编写一套简易车间能源信息系统(附代码)

自动化设备数据采集与PLC联网方案实例-迈向工厂数字化的第一步

初学者会采用txt文本写入来实现日志保存,但是文本写入不是线程安全,当存在多个线程同时写入日志时,就会出现一些问题。

本节主要采用开源组件Log4Net来实现错误ERROR信息文本存储,并结合SQLite数据库,将日志INFO信息存储到数据库中,便于后续的查询。

1、开发准备

  • 首先新建一个Windows窗体应用,取名为thinger.cn.Log4NetSQLitePro,UI界面设计如下所示:
fe16f0672e279cfb1cf8228f8443a912.png
  • 通过Nuget添加Log4Net开源组件,如下所示:
928df5ae528654f09f1630420f8ced56.png
  • 通过Nuget添加SQLite组件,如下所示:
e19797e85a3c52134f8975a3e539d829.png

2、文本存储

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

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

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

bcfef9f071c04fa7c71eb9e7a0826e48.png
  • 配置文件编写

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

d4de993b4f95b3704170f0aa02d83459.png

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

4f4e4a66ff447ea6d23fd3a907da1567.png

其中,较为重要的是日志信息的格式,对应上面文件中的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,不够空格填充
  • 配置文件属性中的复制到输出目录,设置为始终复制或如果较新则复制,如下图所示:
953e6b9460be69335e9a57901d987915.png
  • 项目的AssemblyInfo.cs类中添加一行代码,如下所示:

2beb06fad981e3338c73f9794f14817f.png

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

8aef98ce30a9b7033168c3ce6de82bc1.png

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

f930e98e0a2252920f8e5a59bb8ba8f1.png

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

03b3bee77315dd652344ae657e16e746.png

3、SQLite存储

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

  • 创建数据库及数据表

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

55c9c9b9b92fd0b67153a808ad753ad3.png

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

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

  • 6859838dddf0ba7dbd36befa51fa3a84.png

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

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

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

69e41932277a548631941043e2bb40ff.png

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

69e41932277a548631941043e2bb40ff.png

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

9b23e4189b6f53338c022429c1911e6d.png

4、实际应用

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

5、写在最后【需要源码必看】

      最近发现越来越多的小伙伴投入到C#上位机学习中,初学者学习最大的困扰就是无人交流,因此我们组建了一个工控上位机学习交流微信群,欢迎各位小伙伴加入,本文源码也可以通过交流群获取

PS:本群仅针对初学者,大佬勿进。

d1d9e5b56d11a1006141672476706ac2.png

硬核专辑

工业热点 | 数据采集 | 应用与库(西门子、罗克韦尔、倍福等)

WinCC技术 | 工业网络 | MES技术相关| 工业巨头战略布局 | 工业通讯案例 

仿真与虚拟调试 | 职业感悟、认知提升 | 自动化控制标准合集

46d443946a32bd9aba61dd8439246268.png

软件定义PLC与制造的时代,工程师的职业未来在哪里?

2020-08-12

1bc410e15ca11d0c329acb69e6f6d06e.png

解读西门子的工业软件帝国,巨头的数字化工业战略

2020-08-18

d35223edd60ff8f20d18310847b91e2a.png

国内第一份公开的工信部含有物流仿真的行业标准(下载)-物流数字化仓储

2020-08-20

a6d9cd447a9c6a14fa079c0ea9dc7ba5.png

美国如何靠软件卡死中国制造?工业软件从业者超硬核科普

2020-08-21

42708742d9eb066b1655a4a80c86d356.png

一文了解西门子、达索、施耐德、罗克韦尔等巨头数字化工厂仿真软件

2020-08-27

506598f88b39e25be8b51abc50032956.png

西门子Teamcenter与SAP系统集成配置与演示

2020-08-28

8bce256df32415b3516991172cdf58a6.png

自动化设备数据采集项目中S7-1500和PC的时间同步

2020-09-02

60ffecaf6a994d5d189de80a73f636bf.png

最全盘点卡中国脖子的35项技术,折射中国工业水平的真实现状

2020-09-05

076a12fb1d8b22509fbfc40fd6a17798.png

西门子、施耐德、罗克韦尔PLC程序设计漏洞探秘

2020-09-07

e27e2e182ad97bafd1b1d7405c41c137.png

134页官方PPT解读西门子数字化工业服务

2020-08-24

395d6a4927141a3abec3de8654088460.png

WinCC (TIA Portal) 访问 SQL  SERVER数据库

2020-08-22

4a8dd6807f87181edc629149a43254af.png

深度解析SCADA、物联网IOT和MES之间的联系与区别

2020-08-14

e970980f0ba6c648943609d7f116be51.png

IT大举入侵OT,自动化早已成为一个“软件”行业

2020-08-09

8c369dad5a69242fba44aba926b589c8.png

Modbus 的RTU、ASCII、TCP傻傻搞不清楚?一文最全解读

2020-08-10

201bccc5c49bb55489737e9a9981ec6b.png

WinCC与MES的生产工单和批次数据交互

2020-08-07

6dededd265b98d0f8b14813794f7f3b8.png

免责申明:本公众号所载文章为本公众号原创或根据网络搜索编辑整理,文章版权归原作者所有。因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片,资料,下载链接中所包含的软件,资料等,如有侵权,请跟我们联系协商或删除,谢谢!

ee208c27ebdd435e4dc371f706cb0ed3.png

我们是一群智能制造技术的爱好者,我们乐于分享,我们积极向上,我们也许有些宅,但是我们很有爱,我们期待您的加入

--智能制造之家

多重福利哦

1.若您有智能制造相关资料需求,可以到智能制造之家社区进行下载,留言与沟通~

2.进入知识星球智能制造之家,提升自我认知,认识更多朋友,掌握更多资源,更多技巧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值