C# 日志框架Serilog使用

1、框架和说明

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

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

2、配置文件

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

cs 复制代码
{
  "Serilog": {
    "Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ], // 引入Serilog.Sinks.Console  
    "MinimumLevel": "Debug", // 默认的最低日志级别,LogEventLevel.Debug/Information/Warning/Error/Fatal
    "WriteTo": [
      {
        "Name": "File", // 使用文件接收器
        "Args": {
          "path": "logs/log-.txt", // Debug日志文件的路径  
          "rollingInterval": "Day", // 每天滚动日志文件  
          "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}", // 可选的输出模板  
          //"outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3} {SourceContext}] {Message:lj} {NewLine}", // 不同的输出模板  
          "restrictedToMinimumLevel": "Debug" // 限制此接收器仅接收Debug及以上级别的日志  
        }
      },
      {
        "Name": "Console", // 使用控制台接收器
        "Args": {
          "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {Message:lj} {NewLine}", // 控制台输出模板  
          "restrictedToMinimumLevel": "Debug" // 限制此接收器接收Debug及以上级别的日志  
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ] // 可选的日志丰富器  
  }
}

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

3、使用验证

cs 复制代码
using Microsoft.Extensions.Configuration;
using Serilog;
using Serilog.Events;


// 构建配置  
var configuration = new ConfigurationBuilder()
    .AddJsonFile("serilog.json", optional: false, reloadOnChange: true)
    .Build();

Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(configuration)
            .CreateLogger();

Log.Information("log");
Log.Error("Error");

4、注意事项

4.1日志淘汰

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

4.2多日志输出

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

相关推荐
神仙别闹1 小时前
基于C#+SQL Server实现(Web)学生选课管理系统
前端·数据库·c#
向宇it2 小时前
【unity组件介绍】URP Decal Projector贴花投影器,将特定材质(贴花)投影到场景中的其他对象上。
游戏·3d·unity·c#·游戏引擎·材质
斯是 陋室11 小时前
在CentOS7.9服务器上安装.NET 8.0 SDK
运维·服务器·开发语言·c++·c#·云计算·.net
inwith12 小时前
C#语法基础总结(超级全面)(二)
开发语言·c#
ヾChen16 小时前
13届蓝桥杯省赛程序设计试题
物联网·学习·蓝桥杯·c#
我是唐青枫20 小时前
C#.NET 泛型详解
开发语言·c#·.net
Yasin Chen21 小时前
C# StringBuilder源码分析
开发语言·c#
格林威1 天前
Baumer工业相机堡盟工业相机如何通过YoloV8模型实现人物识别(C#)
开发语言·人工智能·数码相机·yolo·计算机视觉·c#
Rabbb1 天前
C# JSON 反序列化时,忽略转换失败的属性 JTokenSafeToExtensions
后端·c#·json
三目条件1 天前
C#将类属性保存到Ini文件方法(利用拓展方法,反射方式获取到分组名和属性名称属性值)
java·开发语言·c#