# MongoDbLog **Repository Path**: zxmlovelyboy/mongo-db-log ## Basic Information - **Project Name**: MongoDbLog - **Description**: 采用 .NET 5.0 + NLog + MongoDB + WebApi - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2021-03-11 - **Last Updated**: 2024-02-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MongoDbLog #### 介绍 如今是NoSql当道,非关系性数据在日常工作中开始大量采用,为我们的主库SQL Sever/MySql 减轻压力。 #### 软件架构 本系统采用.NET5.0 + NLog + MongoDB + WebApi + Swagger 快速接口开发。 #### 安装教程 1. MongoDB 官网获取到我们的安装包下载地址([MongoDB Community Download](https://www.mongodb.com/try/download/community)) 2. 安装并配置环境,D:\Program Files\MongoDB\Server\4.4\bin 下mongod.cfg文件,将bindIp: 0.0.0.0,这样支持远程连接。 3. 打开 Navicat,连接安装好的 MongoDB 服务 4. 用户角色配置,创建一个管理员用户,这里我就将管理员用户的角色设置为 root 用户 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0311/111906_8a1be094_4983527.png "屏幕截图.png") //切换到 admin 数据库 use admin //创建一个管理员用户 db.createUser( { user: "your name", pwd: "your password", roles: [ { role: "root", db: "admin" } ] } ) 5. 创建好管理员用户后,我们就可以为数据库配置用户与权限了。右击连接名称,新建一个数据库 ApiLog,切换到 ApiLog 数据库后,新建一个可以读写的用户simon。用户都创建完成后,关闭我们的 MongoDB 连接。 //切换到 ApiLog 数据库 use ApiLog //创建一个管理员用户 db.createUser( { user: "simon", pwd: "simon", roles: [ { role: "readWrite", db: "ApiLog" } ] } ) 6. mongod.cfg 中,取消 security 节点的注释,添加授权配置,修改完成后,重启服务,此时,MongoDB 就必须通过账户密码登录了。 security: authorization:enabled ![输入图片说明](https://images.gitee.com/uploads/images/2021/0311/112323_0a608386_4983527.png "屏幕截图.png") #### 使用说明 1. VS 2019 新增一个WebApi 应用程序 2. 安装必要的包,NLog、NLog.Web.AspNetCore、NLog.Mongo。 3. 新增nlog.config配置文件,属性设置: “如果较新则复制” ![输入图片说明](https://images.gitee.com/uploads/images/2021/0311/112634_1deb3093_4983527.png "屏幕截图.png") 4. 配置文件如下: ``` ``` 5. 入口代码改写 ``` public class Program { public static void Main(string[] args) { //加载日志配置信息文件后去捕获所有的错误 var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); try { logger.Info("Init Log API Information"); CreateHostBuilder(args).Build().Run(); } catch (Exception ex) { logger.Error(ex, "Stop Log Information Because Of Exception"); } finally { LogManager.Shutdown(); } } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }) .ConfigureLogging(logging => { logging.ClearProviders();//移除其它已经注册的日志处理程序 logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);//记录最小日志级别 }) .UseNLog();//注入 NLog 服务; } ``` ![输入图片说明](https://images.gitee.com/uploads/images/2021/0311/113010_ea9117f2_4983527.png "屏幕截图.png") 6. 查看数据库数据 a. Navicat for MongoDB ![输入图片说明](https://images.gitee.com/uploads/images/2021/0311/113102_4df614b4_4983527.png "屏幕截图.png") b. MongDB Compass ![输入图片说明](https://images.gitee.com/uploads/images/2021/0311/112901_282a7fc9_4983527.png "屏幕截图.png") #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)