# 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 用户

//切换到 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

#### 使用说明
1. VS 2019 新增一个WebApi 应用程序
2. 安装必要的包,NLog、NLog.Web.AspNetCore、NLog.Mongo。
3. 新增nlog.config配置文件,属性设置: “如果较新则复制”

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 服务;
}
```

6. 查看数据库数据
a. Navicat for MongoDB

b. MongDB Compass

#### 参与贡献
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/)