Asp.Net Core 8.0 使用 Serilog 按日志级别写入日志文件的两种方式

1、所需的Nuget包

        本文项目的版本是.NET 8.0,如果使用其它版本安装适配版本即可。

Serilog.AspNetCore(8.0.2)

Serilog.Sinks.File(5.0.0)

Serilog.Expressions(5.0.0)

2、两种配置方式

2.1 代码形式(Program.cs)

    在Program.cs文件中,添加如下代码

//设置Serilog为日志管理
builder.Host.UseSerilog((context, loggerConfiguration) =>
{
    loggerConfiguration.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)//最小日志级别
        .Enrich.FromLogContext()
        
        .WriteTo.Console()//输出到控制台
        
        //按日志级别分别写入不同的日志文件中(可设置参数outputTemplate模板,有默认这里就不设置了)
        .WriteTo.Logger(configure => configure
             .Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information)//过滤
             .WriteTo.File("Logs/Info/info.txt", rollingInterval: RollingInterval.Day))
        
        .WriteTo.Logger(configure => configure
             .Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning)//过滤
             .WriteTo.File("Logs/Warn/warn.txt", rollingInterval: RollingInterval.Day))
        
        .WriteTo.Logger(configure => configure
             .Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)//过滤
             .WriteTo.File("Logs/Error/error.txt", rollingInterval: RollingInterval.Day));
});
 

2.2 配置文件形式(appsetting.json)

    2.2.1、appsetting.json文件添加如下配置信息

"Serilog": {
  "Using": [ "Serilog.Sinks.File" ],
  "MinimumLevel": {
    "Default": "Information",//默认日志输出级别
    "Override": {
      "Microsoft": "Warning",
      "System": "Warning"
    }
  },
  "WriteTo": [

    { "Name": "Console" },//输出到控制台

    {//info
      "Name": "Logger",
      "Args": {
        "configureLogger": {
          "Filter": [//过滤
            {
              "Name": "ByIncludingOnly",
              "Args": {
                "expression": "@l = 'Information'"
              }
            }
          ],
          "WriteTo": [//写入
            {
              "Name": "File",
              "Args": {
                "path": "Logs/Info/info.txt",
                "rollingInterval": "Day",
                "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"
              }
            }
          ]
        }
      }
    },

    {//warning
      "Name": "Logger",
      "Args": {
        "configureLogger": {
          "Filter": [
            {
              "Name": "ByIncludingOnly",
              "Args": {
                "expression": "@l = 'Warning'"
              }
            }
          ],
          "WriteTo": [
            {
              "Name": "File",
              "Args": {
                "path": "Logs/Warn/warn.txt",
                "rollingInterval": "Day",
                "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"
              }
            }
          ]
        }
      }
    },

    {//error
      "Name": "Logger",
      "Args": {
        "configureLogger": {
          "Filter": [
            {
              "Name": "ByIncludingOnly",
              "Args": {
                "expression": "@l = 'Error'"
              }
            }
          ],
          "WriteTo": [
            {
              "Name": "File",
              "Args": {
                "path": "Logs/Error/error.txt",
                "rollingInterval": "Day",
                "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"
              }
            }
          ]
        }
      }
    }
  ],
  "Enrich": [ "FromLogContext", "WithThreadId" ]
}
 

2.2.2、在Program.cs文件中添加如下代码进行Serilog的注册使用 

//设置Serilog为日志管理
builder.Host.UseSerilog((context, loggerConfiguration) =>
{
    //读取配置文件中Serilog配置信息
    loggerConfiguration.ReadFrom.Configuration(context.Configuration);
});
 

3、实现效果如下

    Logs/Info/info.txt 指定的日志文件路径是位于项目根路径下

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956303.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于ESP32+VUE+JAVA+Ngnix的一个小型固件编译系统

一、前提 开发ESP32固件时,使用本地环境输出固件时,存在多个开发多种开发平台的问题。会导致最终输出的固件不统一。更可能因为本地的开发环境差异导致固件无法追溯。 基于上述原因,开发了一个小型的固件编译系统。将该系统部署在一台ubutn…

自然语言处理——自注意力机制

一、文字表示方法 在自然语言处理中,如何用数据表示文字是基础问题。独热编码(One-hot Encoding )是一种简单的方法,例如对于 “我”“你”“他”“猫”“狗” 等字,会将其编码为如 “我 [1 0 0 0 0 ……]”“你 [0 …

[JavaScript] 运算符详解

文章目录 算术运算符(Arithmetic Operators)注意事项: 比较运算符(Comparison Operators)注意事项: 逻辑运算符(Logical Operators)短路运算:逻辑运算符的返回值&#xf…

《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答: 问:《汽车维护与修理》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《汽车维护与修理》级别? 答:国家级。主管单位:中国汽车维修行业协会 …

VUE学习笔记(入门)17__小黑记事本综合案例

目录结构 记得引入css样式 css代码 /* 清除浏览器的默认内外间距 */ html, body {margin: 0;padding: 0; } body {background: #fff; } button {margin: 0;padding: 0;border: 0;background: none;font-size: 100%;vertical-align: baseline;font-family: inherit;font-weig…

React的应用级框架推荐——Next、Modern、Blitz等,快速搭建React项目

在 React 企业级应用开发中,Next.js、Modern.js 和 Blitz 是三个常见的框架,它们提供了不同的特性和功能,旨在简化开发流程并提高应用的性能和扩展性。以下是它们的详解与比较: Next、Modern、Blitz 1. Next.js Next.js 是由 Ve…

【React】插槽渲染机制

目录 通过 children 属性结合条件渲染通过 children 和 slot 属性实现具名插槽通过 props 实现具名插槽 在 React 中,并没有直接类似于 Vue 中的“插槽”机制(slot)。但是,React 可以通过 props和 children 来实现类似插槽的功能…

常见IQ测试题:把下面的六个图形分为两类,使每一类图形都有各自的共同特征或规律,分类正确的一项是( )。​​​​​​​

[单选题] 把下面的六个图形分为两类,使每一类图形都有各自的共同特征或规律,分类正确的一项是( )。 A A ①②③,④⑤⑥ B B ①⑤⑥,②③④ C C ①②④,③⑤⑥ (正确答案&#xff0…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(七)

文章目录 一、题库管理模块实现1、新增题目功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、题目列表功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询题目列表接口实现2.3.2 后端编辑试题接口实现2.4 效果展示二、代码下载一、题库管…

opentelemetry-collector docker安装

一、编写配置 nano /root/otelcol-config.yamlreceivers:otlp:protocols:grpc:endpoint: 0.0.0.0:4317http:endpoint: 0.0.0.0:4318 exporters:debug:verbosity: detailed service:pipelines:traces:receivers: [otlp]exporters: [debug]metrics:receivers: [otlp]exporters: …

xiao esp32 S3播放SD卡wav音频

本文旨在使用xiao esp32 S3 播放SD卡上的音频文件 1 硬件准备 SD卡 2 代码实现 2.1 依赖库 ESP32-audioI2S-master 2.2 代码 #include "Arduino.h" #include "Audio.h" #include "SD.h"// Digital I/O used #define I2S_DOUT 6 #defi…

要获取本地的公网 IP 地址(curl ifconfig.me)

文章目录 通过命令行查询(适用于 Linux/Mac/Windows)Linux/MacWindows 注意事项 要获取本地的公网 IP 地址,可以通过以下简单的方法: 通过命令行查询(适用于 Linux/Mac/Windows) Linux/Mac 打开终端。输入…

金融项目实战 07|Python实现接口自动化——连接数据库和数据清洗、测试报告、持续集成

目录 一、投资模块(投资接口投资业务) 二、连接数据库封装 和 清洗数据 1、连接数据库 2、数据清洗 4、调用 三、批量执行测试用例 并 生成测试报告 四、持续集成 1、代码上传gitee 2、Jenkin持续集成 一、投资模块(投资接口投资业务…

Zemax 中的二向色分束器和荧光波偏移

二向色分光镜是一种专用光学元件,用于根据光的波长将一束光分成两束独立的光。“二向色”是指该元件根据光的波长选择性地透射或反射光的性质。 在大多数情况下,二向色分束器由一种对不同波长的光具有不同折射率的材料制成。分束器的表面涂有一层薄膜&a…

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用 1. 建议按文章顺序从头看是看 第一篇:一文大白话讲清楚啥是个webpack第二篇:一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建然后看本篇,Loader的配置…

微信消息群发(定时群发)-UI自动化产品(基于.Net平台+C#)

整理 | 小耕家的喵大仙 出品 | CSDN(ID:lichao19897314) 关联源码及工具下载https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/…

游戏引擎学习第81天

仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中,讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分,因为当时主要的工作重心不在这里,但在实现过程中,发现地…

Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘

准备 Ubuntu 24.04 LTSUbuntu 空闲硬盘挂载Ubuntu 安装 Docker Desktop [我的Ubuntu服务器折腾集](https://blog.csdn.net/jh1513/article/details/145222679。 安装 seafile 参考资料 Docker安装 Seafile OnlyOffice 并配置OnlyOffice到Seafile,实现在线编辑…

科研绘图系列:R语言绘制多种图形(multiple plots)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图输出画图2画图3画图4画图5系统信息介绍 科研绘图系列:R语言绘制多种图形(multiple plots) 加载R包 library(tidyverse) library(RColo…

【Elasticsearch入门到落地】6、索引库的操作

接上篇《5、安装IK分词器》 上一篇我们进行了IK分词器的安装与测试,本篇我们来学习ElasticSearch的索引库的操作,学习mapping映射属性以及CRUD操作。 一、前情回顾 我们在前几篇学习了ElasticSearch的基本概念,并动手搭建了ElasticSearch环…