• C# 日志框架Serilog使用


    1、框架和说明

           C#日志框架Serilog支持多种场景输出,简单验证了一下,比较方便

           包的安装,推荐直接使用“推荐NuGet包管理器”安装Serilog.AspNetCore,常见的组件都已经集成在一个包中,使用比较方便

    2、配置文件

           Serilog可以由配置文件来定义行为,而且配置文件的修改即时生效。参考配置文件如下:

    1. {
    2. "Serilog": {
    3. "Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ], // 引入Serilog.Sinks.Console
    4. "MinimumLevel": "Debug", // 默认的最低日志级别,LogEventLevel.Debug/Information/Warning/Error/Fatal
    5. "WriteTo": [
    6. {
    7. "Name": "File", // 使用文件接收器
    8. "Args": {
    9. "path": "logs/log-.txt", // Debug日志文件的路径
    10. "rollingInterval": "Day", // 每天滚动日志文件
    11. "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}", // 可选的输出模板
    12. //"outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3} {SourceContext}] {Message:lj} {NewLine}", // 不同的输出模板
    13. "restrictedToMinimumLevel": "Debug" // 限制此接收器仅接收Debug及以上级别的日志
    14. }
    15. },
    16. {
    17. "Name": "Console", // 使用控制台接收器
    18. "Args": {
    19. "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj} {NewLine}", // 控制台输出模板
    20. "restrictedToMinimumLevel": "Debug" // 限制此接收器接收Debug及以上级别的日志
    21. }
    22. }
    23. ],
    24. "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ] // 可选的日志丰富器
    25. }
    26. }

        这个配置文件定义了2个输出,可以同时输出到文件和控制台。

    3、使用验证

    1. using Microsoft.Extensions.Configuration;
    2. using Serilog;
    3. using Serilog.Events;
    4. // 构建配置
    5. var configuration = new ConfigurationBuilder()
    6. .AddJsonFile("serilog.json", optional: false, reloadOnChange: true)
    7. .Build();
    8. Log.Logger = new LoggerConfiguration()
    9. .ReadFrom.Configuration(configuration)
    10. .CreateLogger();
    11. Log.Information("log");
    12. Log.Error("Error");

    4、注意事项

           4.1日志淘汰

          日志可以启用保留多少时间的,过期自动清理。但如果非连续运行,超期的过期日志文件不会自动删除。建议在启动时写个代码检查一下,有过期的手工删除

          4.2多日志输出

            配置时可以同时配置不同的输出文件,但没有适配器都是独立工作的,由"restrictedToMinimumLevel"参数决定最低的适配级别,没有最高的适配级别。如果配置Debug、Info、Error三个适配器,会同时工作,Debug的会包含Info和Error的输出,Error的仅包含Error和Fatal的输出。

  • 相关阅读:
    AtCoder Beginner Contest 266「ABCDEF」
    阿里巴巴 CTO 程立:开源是基础软件的源头!
    春节静态HTML网页作业模板 传统节日文化网站设计作品 静态学生网页设计作业简单网页制作
    测试--自动化测试:关于unittest框架
    腾讯云服务器简介和使用流程
    [附源码]java毕业设计江苏策腾智能科技公司人事管理系统
    脑电信号分类问题的数据预处理方法
    uniapp-vue3-vite 搭建小程序、H5 项目模板
    06.Oracle数据备份与恢复
    小满nestjs(第十二章 nestjs 中间件)
  • 原文地址:https://blog.csdn.net/yuming/article/details/139909122