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的输出。

相关推荐
合作小小程序员小小店4 小时前
桌面开发,在线%信息管理%系统,基于vs2022,c#,winform,sql server数据。
开发语言·数据库·sql·microsoft·c#
曹牧5 小时前
C#中的StartsWith
java·服务器·c#
时光追逐者5 小时前
分享5款.NET开源免费的Redis客户端组件库
数据库·redis·开源·c#·.net·.net core
小邓   ༽5 小时前
C语言课件(非常详细)
java·c语言·开发语言·python·eclipse·c#·c语言课件
睡前要喝豆奶粉5 小时前
EF Core动态sql
数据库·sql·c#·.netcore
故事不长丨5 小时前
C#委托的使用
c#·wpf·winfrom·委托·网站开发
未来之窗软件服务5 小时前
幽冥大陆(三十八)P50酒店门锁SDK C#仙盟插件——东方仙盟筑基期
开发语言·单片机·c#·东方仙盟·东方仙盟sdk·东方仙盟vos智能浏览器
wzm—5 小时前
C#获取每年节假日
开发语言·c#
合作小小程序员小小店5 小时前
桌面开发,食堂卡管理系统开发,基于C#,winform,mysql数据库
数据库·mysql·c#
合作小小程序员小小店5 小时前
桌面开发,物业管理系统开发,基于C#,winform,mysql数据库
开发语言·数据库·sql·mysql·microsoft·c#