C# 日志框架Serilog使用

1、框架和说明

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

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

2、配置文件

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

{"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、使用验证

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rethinking Semantic Segmentation: A Prototype View 2022CVPR Oral

流行的语义分割方案的掩码解码策略(基于参数softmax或基于像素查询)视为可学习的类原型。本研究揭示了这种参数分割策略的几个局限性,并提出了一种基于不可学习原型的非参数替代方案。与之前的方法以完全参数化的方式为每个类学习单个权重/查…

【代码随想录算法训练营第五十二天|647.回文子串、516.最长回文子序列】

文章目录 647.回文子串动态规划双指针法 516.最长回文子序列 647.回文子串 动态规划 dp[i][j]指的是s[i:j1]这段是否是回文串,如果s[i]s[j]需要分三种情况来判断,如果ij或者ji1,那么就是回文串,否则还要看这中间的是否是回文串&…

Kubernetes面试整理-如何利用PodSecurityPolicies来提高集群的安全性?

PodSecurityPolicy (PSP) 是 Kubernetes 中用于定义和控制 Pod 安全配置的策略。通过 PSP,可以设置对 Pod 的一些安全约束条件,从而提高集群的安全性。虽然 PSP 从 Kubernetes 1.21 开始已被弃用,并在 1.25 版本中移除,但在一些旧版 Kubernetes 集群中,PSP 仍然是一个重要…

ubuntu22.04编译安装tesseract

1、 为什么用自己编译安装,而不采用apt安装? 由于tesseract有很多依赖包,直接用deb包或者rpm包等安装包安装很复杂,不一定能成功安装。 2、安装基本的依赖包 sudo apt update sudo apt install g autoconf automake libtool pkg…

Docker-Compose一键部署项目

Docker-Compose一键部署项目 目录 Docker-Compose一键部署项目介绍部署Django项目项目目录结构 docker-compose.ymlnginx的default.conf文件后端Dockerfile文件mysql.env一键部署DNS域名解析引起的跨域问题 介绍 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的…

如何排查Java应用的死锁

排查Java应用中的死锁问题是一个复杂但重要的任务,因为死锁会导致应用程序停止响应,影响用户体验和系统稳定性。以下是一些方法和步骤,帮助你排查Java应用中的死锁。 1. 理解死锁的概念 在计算机科学中,死锁是指两个或多个线程相…

新手向导:掌握Axure RP的第一步

其实很多时候,我们很容易把教程做得太复杂,让学生失去重点被复杂的理论吓到。入门基础的时候只需要先弄清楚两个核心内容,学起来就容易多了:一是简单了解这个软件,二是学习这个软件的基本操作。所以如果你问我什么是好的 Axure RP…

cesium升级到116版本后底图和地形加载问题

cesium在2023-07-03 升级到了107版本,107版本加载底图和地形方式做了变更,之前的imageryProvider 和 CesiumTerrainProvider方式被remove掉了,换了另外方式。变更如下所示: cesium/CHANGES.md at 1.116 CesiumGS/cesium GitHub…

【QCustomPlot实战系列】QCPGraph折线图的渐变

包含折线图渐变效果以及QCPAxisTickerDateTime的使用 static QBrush GenerateLinearBrush(Qt::Orientation orientation) {qreal x 1;qreal y 0;if (orientation Qt::Vertical) {x0;y1.5;}QLinearGradient gradient(0, y, x, 0);gradient.setCoordinateMode(QLinearGradie…

USB描述符的一些解释

USB设备描述符、配置描述符和一些数据缓冲区的数组。让我们逐步解析这些数组中的值。 设备描述符 (Device Descriptor) UINT8C DevDesc[18] = {0x12, 0x01, 0x10, 0x01, 0xff, 0x00, 0x02, 0x08,0x86, 0x1a, 0x23, 0x55, 0x04, 0x03, 0x00, 0x00,0x00, 0x01};0x12 (18): 设备…

Spring Boot中的分布式缓存方案

Spring Boot中的分布式缓存方案 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Spring Boot应用中实现分布式缓存的方案,以提升系统…

软件需求管理规程(DOC原件)

软件需求管理规程是确保软件开发过程中需求清晰、一致、可追踪的关键环节: 明确需求:项目初期,与利益相关者明确项目目标和需求,确保需求完整、无歧义。需求评审:组织专家团队对需求进行评审,识别潜在风险和…

解释Java中的接口和抽象类的使用场景。

在Java中,接口和抽象类是两种特殊的类类型,它们各自有不同的使用场景。 **接口(Interface)** 接口是一种契约,它定义了一组方法的契约,这些方法在实现类中必须实现。它们常常被用来定义一种规范或者标准&…

【前端】前端文件下载方式盘点

前端文件下载方式盘点 在前端开发中&#xff0c;文件下载是一个常见的功能需求。本文将介绍几种常见的前端文件下载方式&#xff0c;分析各自的优缺点&#xff0c;并提供具体的实现代码。 1. 使用 HTML 的 <a> 标签 优点 简单易用&#xff0c;适用于下载静态文件。浏…

【SQL】⼀条更新语句的执行流程

在关系型数据库管理系统&#xff08;RDBMS&#xff09;中&#xff0c;一条更新语句&#xff08;例如UPDATE语句&#xff09;的执行流程涉及多个步骤&#xff0c;以确保数据的一致性、完整性和高效性。以下是典型的更新语句执行流程的概述&#xff1a; 解析&#xff08;Parsing&…

CPU的核心和线程怎么理解,选购机器如何考虑CPU性能

CPU的核心和线程是计算机处理器的两个重要概念。 CPU核心&#xff1a;CPU核心是指CPU内部实际执行指令的独立单元&#xff0c;每个核心可以独立处理任务。一个CPU可以有一个或多个核心&#xff0c;多核心CPU可以同时处理多个任务&#xff0c;提高计算机的性能。例如&#xff0c…

huggingface加速下载模型

文章目录 所需环境huggingface-cli 用法登录token 获取 huggingface 镜像huggingface 缓存hf-transfer 拉满下载带宽如果开了的话&#xff0c;记得关掉科学上网&#xff01;&#xff01;&#xff01; 所需环境 python huggingface-cli 用法 huggingface-cli的更多用法点击这…

基于SpringBoot+IDEA+Mysql开发的在线课程教育平台

基于SpringBootIDEAMysql开发的在线课程教育平台 项目介绍&#x1f481;&#x1f3fb; 项目背景描述 随着信息技术的迅猛发展和互联网的普及&#xff0c;传统教育模式正面临着前所未有的挑战和机遇。为满足广大用户对于灵活、便捷、高效学习方式的需求&#xff0c;我们决定开发…

Redis 内存碎片是什么?如何清理?

Redis 内存碎片相关的问题在得物、美团、阿里、字节、携程等公司的后端面试中都曾出现过&#xff0c;还是建议认真准备一下。即使不是准备面试&#xff0c;日常开发也是能够用到的&#xff01; 什么是内存碎片? 你可以将内存碎片简单地理解为那些不可用的空闲内存。 举个例子&…

PMP认证有什么好处?

一般这些人适合去考PMP认证&#xff1a; 想要通过资质进行晋升的人群&#xff1a; 比如说在项目相关的助理岗位&#xff0c;企业中的项目人才需求依旧是很大的&#xff0c;项目助理如果想要达到项目经理或者项目主管的提升&#xff0c;就需要让公司对自己的项目管理能力认同才…