首页 > 其他分享 >ABP VNext 的日志机制 + SeriLog

ABP VNext 的日志机制 + SeriLog

时间:2023-03-27 19:12:43浏览次数:41  
标签:VNext 配置文件 SeriLog ABP serilog 文档 日志

**

ABP VNext 的日志机制
**
正用ABP VNext做个系统,由于框架默认带来日志处理机制,开发阶段基本能用,也一直没有去动它,快要上线了,思考了一下正式环境的日志管理流程,由于系统不大,预计访问量可能也不大,但默认的日志管理太简单,不便于后期日常维护。
缺点如下:

默认的日志只有单个文件,写上几天就变得很大,起不到检索的功能
默认代码没有把日志放在配置文件中,如果要修改日志的配置得改代码。
**

ABP VNext 的日志
**
为了解决以上两个缺点,就开始研究一下ABP VNext的日志。先翻一下ABP VNext的文档,日志有专门的菜单哦。

再看看代码:


感觉不太对,虽然没有用过SeriLog,但这几个字还是认识的好吧。

那我们OK,百度一下SeriLog 链接如下:
https://github.com/serilog/serilog/wiki/Getting-Started

这下看上去和现有代码差的不远了,就是他了

**

SeriLog
**
知道了是用的SeriLog,就直接看SeriLog来解决这两个问题

默认的代码是这样的:
在program.cs的Main方法中

Log.Logger = new LoggerConfiguration()
#if DEBUG
.MinimumLevel.Debug()
#else
.MinimumLevel.Information()
#endif
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Async(c => c.File("Logs/logs.txt"))
.CreateLogger();
1
2
3
4
5
6
7
8
9
10
**

滚动策略
**
默认代码就往一个logs.txt的文件里持续写日志,文件会越来越大,大到打开文件都困难。
当然,文档上说文件最大默认是1G

我的日志还没有那么大,所以不知道是不是有效,但1G的txt等于就是个垃圾了。
看下文档,https://github.com/serilog/serilog-sinks-file

可以给文件加滚动策略,比如:按时间间隔生成多个文件,或按照大小限制来分割文件。

**

配置文件
**
APB VNext的默认代码没有引用配置文件,其实这也不是什么大问题,因为这些配置可能永远都不会改,但万一哪天需要在生产环境重现或跟踪某个问题,为了降低或升高日志记录级别这么个小事,就得修改代码,还要发布站点,这可能会带来很多不必要和意想不到的麻烦,所以还不如多花一小点时间把这地方做好。
还是在上的文档中,有给出引用配置文件的方式,可以把配置信息放在appsetting.json中。
https://github.com/serilog/serilog-sinks-file

var configuration = new ConfigurationBuilder()
#if DEBUG
.AddJsonFile("appsettings.Development.json")
#else
.AddJsonFile("appsettings.json")
#endif
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
1
2
3
4
5
6
7
8
9
10
这里我加了条件编译,为了在debug和发布后引用不同的配置文件。

配置文件的内容可以按照文档来写。

{
"Serilog": {
"WriteTo": [
{ "Name": "File", "Args": { "path": "log.txt", "rollingInterval": "Day" } }
]
}
}
1
2
3
4
5
6
7
上面的文档中有简单的例子,要用到更复杂的属性,可以看这个文档:
https://github.com/serilog/serilog-settings-configuration

**

异步写文件
**
默认的代码中用的是异步写入日志的方法,这也可以在配置文件中配置。

"Serilog": {
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": {
"path": "Logs/logs.txt",
"rollingInterval": "Day",
"retainedFileCountLimit": null
}
}
]
}
}
]
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
详细的见文档:https://github.com/serilog/serilog-sinks-async

**

其他
**
除了把日志写入文件,SeriLog还支持其他的媒介,有需要也可以试试。
见此文档:https://github.com/serilog/serilog/wiki/Provided-Sinks
————————————————
版权声明:本文为CSDN博主「@9211」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44277627/article/details/128613757

标签:VNext,配置文件,SeriLog,ABP,serilog,文档,日志
From: https://www.cnblogs.com/wl-blog/p/17262542.html

相关文章

  • abp(net core)+easyui+efcore实现仓储管理系统——ABP升级7.3(五十八)
    Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解......
  • WebApi 单文件发布Serilog 失效
    提问WebApi单文件发布Serilog失效怎么解决回答配置文件Appsetting.json增加Using块"Using":["Serilog.Sinks.Console","Serilog.Sinks.File"],示例{"Seril......
  • ABP微服务系列学习-使用Tye启动微服务
    Tye是微软开源的一款开发人员工具,能够用于简化微服务以及分布式应用程序的开发、测试以及部署过程。Tye的首要目标是简化微服务的开发,具体方式包括仅用一行命令执行多项......
  • .Net Core微服务化ABP之六——处理Authentication
    上篇中我们已经可以实现sso,并且为各个服务集成sso认证。本篇处理权限系统的角色问题,权限系统分两层,第一层为整体系统角色权限,区分app用户、后台用户、网站用户的接口权限,第......
  • ABP 结合 MongoDB 集成依赖注入
    1.我们再ABP项目添加一个.NETCore类库 类库名自定定义,我这里定义为 TexHong_EMWX.MongoDb添加NuGet包。ABPmongocsharpdriver  添加 AbpMongoDbConfigurati......
  • 在Abp中使用依赖注入
    依赖注入是一种设计模式,这里主要讨论如何在Abp中使用依赖注入。注册依赖项在Abp中我们有很多种方法来注册依赖项,大多数情况下通过约定来注册依赖项就足够了。这也是......
  • ABP 动态 WebApi 隐藏接口的方法(一)
    在ABP实际开发过程中既有可能会遇到不希望将某些方法暴露,那么就需要想办法将接口隐藏起来。方法一:通过修改修饰符实现。例如将方法修改为private,这种方式比较常用。但这......
  • ABP微服务系列学习-对接Apollo配置中心
    前面我们把服务都已经成功启动,并且对接前端Angular界面。但是在微服务结构中,多个服务意味着需要配置多个配置文件,这时就需要引入配置中心这玩意了。配置中心有很多现成的方......
  • ABP微服务系列学习-搭建自己的微服务结构(一)
    在原本的结构里面,由于默认服务引用的都是ABP原生的模块,所以结构目录里面没有包含modules目录,这里我们添加一个modules目录,用于存放我们的自定义模块。在shared里面,我们再抽......
  • 【愚公系列】2022年03月 .NET架构班 020-ABP vNext 虚拟文件系统
    【摘要】前言虚拟文件系统可以管理文件系统(磁盘)上实际不存在的文件。它主要用于将(js,css,image,cshtml…)文件嵌入到程序集中,并在运行时将它们用作物理文件。一、集成虚拟......