基于.net core webapi和mongodb的日志系统

 开发环境vs2017,.NET Core2.1, 数据写入到mongodb。思路就是1.提供接口写入日志,2.基于接口封装类库。3.引入类库使用

为什么要写它

很多开源项目像nlog、log4net、elk、exceptionless等都挺好的。就是除了引入所需类库,还要在项目中添加配置,不喜欢。elk在分布式海量数据收集和检索方面可能更能发挥它的优势,单纯记日志也可以,exceptionless就是基于elk的。就想着写一个简单易用的、可以发邮件报警的,直接引入类库就能用的一个记日志工具,所有的配置信息和入库都交给web api。这是当时问的问题,upload/201809201139180740.gif" alt="复制代码" style="margin: 0px; padding: 0px; max-width: 900px; height: auto; border: none !important;" />

{  "ConnectionStrings": {    "ConnectionString": "mongodb://yourmongoserver",    "Database": "logdb",    "LogCollection": "logdata"  },  "AllowedHosts": "*",  "AppSettings": {    "SendMailInfo": {      "SMTPServerName": "smtp.qiye.163.com",      "SendEmailAdress": "发送人邮箱",      "SendEmailPwd": "",      "SiteName": "邮件主题",      "SendEmailPort": "123"    }  }}
复制代码
  • 实现依赖注入获取配置文件信息

创建目录结构如下图

AppSettings类

 View Code

DBSettings类

 View Code

 接下来Here is how we modify Startup.cs to inject Settings in the Options accessor model:

 View Code

在项目中将通过IOptions 接口来获取配置信息,后面看代码吧

复制代码
IOptions<AppSettings> IOptions<DBSettings>
复制代码

配置文件信息获取算是准备完了

  • 创建日志信息Model

在Model文件夹下创建类LogEventData,也就是存到mongodb的信息

 View Code
  • 定义database Context

站点根目录新建文件夹Context和类,别忘了引用 MongoDB.Driver  nuget包

 View Code
  • 添加Repository

别纠结为什么叫这个名了,就是数据访问类,像是常用的DAL,创建目录如下,之后可以通过依赖注入来访问具体实现

IRepository类

 View Code

LogRepository类

 View Code

 为了通过DI model来访问LogRepository,修改Startup.cs ,ConfigureServices添加如下代码

services.AddTransient<IRepository<LogEventData>, LogRepository>();//数据访问

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信