前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【BlogBook书】6、Serilog:日志管理

【BlogBook书】6、Serilog:日志管理

作者头像
老张的哲学
发布2024-02-22 15:49:23
1170
发布2024-02-22 15:49:23
举报
文章被收录于专栏:NetCore 从壹开始NetCore 从壹开始

框架高度集成Serilog,继承ASP.NETCore官方的ILogger<>接口,作为记录整个系统应用生命周期的日志工具,涵盖了平时企业应用的常见场景:

1、不同日志级别的记录;2、支持将日志输出到控制台;3、支持日志持久化到数据库;4、支持完整记录Sql执行日志;5、支持输出日志到文件;6、支持配置Seq日志中心;

一、相关的依赖注入配置

代码语言:javascript
复制
builder.Host.AddSerilogSetup();


app.UseSerilogRequestLogging(options =>
{
    options.MessageTemplate = SerilogRequestUtility.HttpMessageTemplate;
    options.GetLevel = SerilogRequestUtility.GetRequestLevel;
    options.EnrichDiagnosticContext = SerilogRequestUtility.EnrichFromRequest;
});

相关参数设置

代码语言:javascript
复制
"Serilog": {
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Information",
        "Microsoft.AspNetCore": "Warning",
        "System": "Warning",
        "System.Net.Http.HttpClient": "Warning",
        "Hangfire": "Information",
        "Magicodes": "Warning",
        "DotNetCore.CAP": "Information",
        "Savorboard.CAP": "Information",
        "Quartz": "Information"
      }
    }
  },

还有日志入库的数据库连接字符串配置

代码语言:javascript
复制
"DBS": [  
    /*
      对应下边的 DBType
      MySql = 0,
      SqlServer = 1,
      Sqlite = 2,
      Oracle = 3,
      PostgreSQL = 4,
      Dm = 5,//达梦
      Kdbndp = 6,//人大金仓
    */    
    {
      "ConnId": "Log", //日志库连接固定名称,不要改,其他的可以改
      "DBType": 2,
      "Enabled": true,
      "HitRate": 50,
      "Connection": "WMBlogLog.db" //sqlite只写数据库名就行,可以替换其他数据库,并修改DBType即可
    },
]

还有一些配合其他功能(比如Aop、Sqlsugar等)的相关参数设置

代码语言:javascript
复制
"AppSettings": {
    "LogToDb": true,
    "LogAOP": {
      "Enabled": false,
      "LogToFile": {
        "Enabled": true
      },
      "LogToDB": {
        "Enabled": true
      }
    },
    "UserAuditAOP": {
      "Enabled": false
    },
    "SqlAOP": {
      "Enabled": true,
      "LogToFile": {
        "Enabled": true
      },
      "LogToDB": {
        "Enabled": true
      },
      "LogToConsole": {
        "Enabled": true
      }
    }
  },

最后还有Seq平台相关配置

代码语言:javascript
复制
"Seq": {
    "Enabled": true,
    "Address": "http://localhost:5341/",
    "ApiKey": ""
  }

二、使用方式

1、直接注入ILogger<>泛型接口即可

代码语言:javascript
复制
private readonly ILogger<BlogController> _logger;

/// <summary>
/// 构造函数
/// </summary>
/// <param name="logger"></param>
/// 
public BlogController(ILogger<BlogController> logger)
{
    _logger = logger;
}


[HttpGet]
[Route("DetailNuxtNoPer")]
public async Task<MessageModel<BlogViewModels>> DetailNuxtNoPer(long id)
{
    _logger.LogInformation("xxxxxxxxxxxxxxxxxxx");
    return Success(await _blogArticleServices.GetBlogDetails(id));
}

2、或直接使用Serilog的Log类

代码语言:javascript
复制
[HttpGet]
[Route("DetailNuxtNoPer")]
public async Task<MessageModel<BlogViewModels>> DetailNuxtNoPer(long id)
{
    Log.LogInformation("yyyyyyyyyyyyyyy");
    return Success(await _blogArticleServices.GetBlogDetails(id));
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NetCore 从壹开始 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档