当前位置: 首页 > news >正文

C#-根据日志等级进行日志的过滤输出

文章速览

  • 概要
  • 具体实施
    • 创建Log系统
    • 动态修改日志等级

坚持记录实属不易,希望友善多金的码友能够随手点一个赞。
共同创建氛围更加良好的开发者社区!
谢谢~

概要

方便后期对软件进行维护,需要在一些关键处添加log日志输出,但时间长了之后会比较占用磁盘的内存;由于Log定义了不同的等级,因此可以根据等级来控制Log的具体磁盘写入。
主要通过【Serilog.Core.LoggingLevelSwitch】来控制日志的输出,前提是日志写入也是用该命名空间下的ILog进行写入。
LoggingLevelSwitch类
ILogger接口

具体实施

创建Log系统

		 /// <summary>/// 用来改变系统Log的输出日志等级/// </summary>public LoggingLevelSwitch LogLevelSwitch { get; private set; } = new LoggingLevelSwitch(Serilog.Events.LogEventLevel.Verbose);/// <summary>/// 创建日志系统,记录系统中发生的事件./// </summary>private ILogger buildLogService(){var basepath = "存储的路径";//使用系统的Log开关来控制LogLevelSwitch类var levelSwitcher = LogLevelSwitch;Log.Logger = new LoggerConfiguration()//控制最小输出日志.MinimumLevel.ControlledBy(levelSwitcher).WriteTo.Logger(lc => lc//此处的Fatal和Error写在一个文件中.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Error || v.Level == Serilog.Events.LogEventLevel.Fatal).WriteTo.File(Path.Combine(basepath, "error-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 10,fileSizeLimitBytes: 1024 * 1024)).WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Information).WriteTo.File(Path.Combine(basepath, "info-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 10,fileSizeLimitBytes: 1024 * 1024)).WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Warning).WriteTo.File(Path.Combine(basepath, "warning-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 10,fileSizeLimitBytes: 1024 * 1024)).WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Debug).WriteTo.File(Path.Combine(basepath, "debug-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 10,fileSizeLimitBytes: 1024 * 1024)).WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(v => v.Level == Serilog.Events.LogEventLevel.Verbose).WriteTo.File(Path.Combine(basepath, "verbose-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 10,fileSizeLimitBytes: 1024 * 1024))//写入日志系统.WriteTo.MAStorageSink().CreateLogger();return Log.Logger;}

动态修改日志等级

/// <summary>/// 更新LogLevel设置./// </summary>/// <param name="logLevel"></param>public void ResetLoggingLevel(LogEventLevel logLevel){//直接修改其MinimumLevel 属性即可LogLevelSwitch.MinimumLevel = logLevel;AppConfig.LogLevel = logLevel.ToString();SaveAppConfig();}

相关文章:

  • FreeRTOS面试题汇总
  • vmware - 主机向虚拟机拷贝文件的临时方法
  • JAVA开发面试超详细
  • 若依nodejs版本过高问题解决方案
  • 【vue】封装的天气展示卡片,在线获取天气信息
  • spring boot 之 集成 druid数据库连接池
  • ACM实训
  • 反射的基本知识
  • 【Linux】套接字的理解 基于TCP协议的套接字编程(单/多进程 / 线程池|英汉互译 / C++)
  • 如何安装 Docker
  • 基于微信小程序的校园捐赠系统的设计与实现
  • 探索移动云:我的ES与Kibana之旅
  • 基于springboot的大创管理系统
  • H4vdo 台湾APT-27视频投放工具
  • Go 项目如何打包在各个平台运行?
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • Angular Elements 及其运作原理
  • C++类中的特殊成员函数
  • CSS 三角实现
  • css系列之关于字体的事
  • express如何解决request entity too large问题
  • HTML中设置input等文本框为不可操作
  • JavaWeb(学习笔记二)
  • jdbc就是这么简单
  • Spring Cloud中负载均衡器概览
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 阿里云应用高可用服务公测发布
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 前端_面试
  • 软件开发学习的5大技巧,你知道吗?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用parted解决大于2T的磁盘分区
  • 学习JavaScript数据结构与算法 — 树
  • 运行时添加log4j2的appender
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • puppet连载22:define用法
  • 阿里云API、SDK和CLI应用实践方案
  • ​ArcGIS Pro 如何批量删除字段
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #git 撤消对文件的更改
  • #Linux(Source Insight安装及工程建立)
  • #前后端分离# 头条发布系统
  • (12)Linux 常见的三种进程状态
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (补)B+树一些思想
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十)DDRC架构组成、效率Efficiency及功能实现