.net6 中使用Serilog,并输出到多个介质中

本文介绍了如何在基于dotnetcore且使用DI组件的WPF项目中集成Serilog,作为日志收集器。包括包安装、配置Serilog读取应用程序配置、注入ILogger以及设置输出到控制台、文件和Seq服务器的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目是一个wpf 项目,但是使用了dotnetcore 自带的DI组件,因为自带的ILogger 并没有提供输出到文件或者其他介质(seq) 的方式,于是就尝试接入Serilog,作为一个收集器,Serilog具备可配置化,下面就是实战

1. 首先需要安装如下包

Serilog (3.0.1) //主组件包
Serilog.AspNetCore (6.0.1)  //提供ILoggingBuilder 的扩展
Serilog.Settings.Configuration (4.0.0-dev-00499) // 映射配置

以下是输出介质相关的包
Serilog.sinks.Console (4.1.0)
Serilog.sinks.File (5.0.0)
Serilog.sinks.Seg (52.3-dev-00262)

2. 使用如下代码,使serilog 读取配置

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

3. 为了使用自带的ILogger ,所以需要注入log,如果不介意使用seriLog 自身的静态方法来写日志,可不注入ILogger ,使用时 直接用 Log.Error()

services.AddLogging(builder =>
{
    builder.ClearProviders();
    builder.AddSerilog();  // 使用serilog 替代标准的日志记录器
});

4.配置也是相当简洁

"Serilog": {
  "MinimumLevel": {
    "Default": "Debug"
  },
  "WriteTo": [
    {
      "Name": "Console",
      "Args": {
        "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm-dd }[{Level:u3}] {Message:lj}{NewLine}{Exception}"
      }
    },
    {
      "Name": "File",
      "Args": {
        "path": "logs\\plcanalog.log",
        "rollingInterval": "Day",
        "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm-dd }[{Level:u3}] {Message:lj}{NewLine}{Exception}"
      }
    },
    {
      "Name": "Seq",
      "Args": {
        "serverUrl": "http://xxxx",
        "apiKey": "xxx",
        "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm-dd }[{Level:u3}] {Message:lj}{NewLine}{Exception}"
      }
    }
  ]
}

总体使用非常丝滑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值