Log2Net是一个用于收集日志到数据库或文件的组件,支持.NET和.NetCore平台。 此组件自动收集系统的运行日志(服务器运行情况、在线人数等)、异常日志。程序员还可以添加自定义日志。 该组件支持.NET平台和.NETCore平台,支持将日志写入到文本文件、SQL Server、Oracle、MySQL,可以方便地扩展到其他数据库。
针对这个组件的数据,相应地有日志查询网站,它查询日志数据库的数据(Log2Net组件存储的日志数据),显示各服务器/网站的实时数据图表显示,提供操作轨迹数据和监控数据的查询功能,并对异常情况进行告警。
一、为什么要开发这个组件
也有有园友要问了,现在的日志组件太多了啊,什么log4net,ELK,Kafka,Grafana,Graylog、facebook scribe,apache chukwa,cloudera flume等。都是国际大厂或知名组织的开源组件,你又何必重复造轮子呢?
确实,这些开源系统不需要代码开发,且功能强大,支持各种类型(例如文本文本、数据库、缓存等)的日志的接入,有图表等多种展现方式,能实现海量数据的快速查询,能存储为多种类型(例如文本文本、数据库、缓存、HDFS等),天生的适合分布式部署。缺点是部署运维较为复杂,需要较多的插件支持(java、nodejs、ErLang等);这些大都采用开源的java、scala等语言开发,优先应用于linux平台,我们不能灵活自由地定制自己的需求,相对我们.net平台来说,资料较少开发难度较大,相对我们的需求来说较为庞大。log4net组件虽然可以灵活地应用到.net系统中,但依然不满足我们的需求。
在我们的系统中,我们想知道用户进行了什么操作,想知道网站的运行情况(例如在线人数、异常情况等),想监控服务器的运行情况(如内存情况、磁盘使用情况等),目前没有一个合适的方案来较好地满足满足我们的需求。因此,我们开发了一个日志组件和一个集中式日志查询系统。这个日志组件可以自动地收集系统的运行情况(如服务器内存、磁盘使用、在线人数、日常日志等),可以记录用户操作情况等,可以通过日志查询界面显示各网站/服务器的实时数据图表显示,提供操作轨迹数据和监控数据的查询功能等。
二、Log2net组件使用效果展示
使用Log2net组件后,可以将日志数据以友好的形式展示:显示各服务器/网站的实时数据图表显示,提供操作轨迹数据和监控数据的查询功能,并对异常情况进行告警。
1 操作日志查询
操作日志查询主要用于按照系统名称、服务器名称、时段、日志类型、关键词等条件查询操作轨迹类数据,主要以列表数据的形式展示日志数据。在列表的左侧,可以显示服务器的概况,如cpu使用率,内存使用率等。在列表的上侧,显示日志的分类汇总情况。如下图所示:
2 系统监控
系统监控主要监控各服务器和应用网站的情况,主要以图形化的方面实时显示网站/服务器的运行情况。
(1)、概况实时显示:显示服务器在当前时刻的cpu/内存使用率等情况;
(2)、服务器状态监控:显示服务器在某时段内的cpu/内存使用率等情况;
(3)、系统流量监控:显示系统在某时段内的在线人数、某页面的访问人数等;
(4)、异常告警:在系统新加入监控或失去监控时音乐告警。
如下图所示:
上图中,每台服务器显示一条曲线图。因为本人测试的服务器只有一台,所以只有一个曲线图。随着服务器个数的增加,自动添加曲线图的个数。
三、Log2net组件的使用方法
看了上面炫酷的效果,是不是有点心动了呢,那么怎么将其应用到自己的网站中呢?别急,跟我一步一步来。
PS. 本组件支持.NET4.5~.NetCore2.1,应该能满足绝大多数筒子们的需求了吧,后续会支持.NetCore的更高版本,与.NetCore同步更新。
1 引用组件
在VS开发工具的nuget中,搜索 Log2Net 组件安装即可。
搜索搜索 Log2Net ,log4net出现在第一位,好吧,我承认,名字是参考他们的,也浏览了他们的代码~~
但是,小主,第二个才是我们要安装的,不要搞错了哦~~
你也可以通过Nuge官网来下载和安装: https://www.nuget.org/packages/Log2Net/ 。但建议使用VS工具的nuget来安装。
2 组件的注册
要使用该组件,需要进行组件的注册:在应用程序初始化的地方,调用 LogApi.RegisterLogInitMsg(SysCategory sys, object Application, bool bWriteStartLog = true, bool bLogMonitor = true);
各参数解释如下:
SysCategory sys:业务系统的名称,在SysCategory枚举中定义好了。
object Application:程序的Application对象,用于网站在线人数和历史访客统计,仅在.net平台中使用。netCore中该参数为null;
bool bWriteStartLog:是否写网站启动的日志,默认为true;
bool bLogMonitor:是否写系统定时监控日志,默认为true。
一般地,在调用该方法时,只需要设置前两个参数,后两个参数可以不设置。
在.net平台中,是 Global.asax 中的Application_Start()事件中注册;
在.netCore平台中,是Startup.cs中 Configure中,appLifetime.ApplicationStarted.Register方法中注册。
该方法必须被调用,且必须在应用程序初始化事件中调用,否则调用其他写日志的方法时会出错。
原文地址:https://www.cnblogs.com/yuchen1030/p/10992259.html