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

资阳建设机械网站wordpress 谷歌分析

资阳建设机械网站,wordpress 谷歌分析,企业建站程序有哪些,温州房产信息网目录 一、目的 二、解决方案 2.1 下载serilog包 2.2 Serilog配置 2.2.1 使用多个File sink配置不同的最小日志级别 2.2.2 使用Filter条件分流到不同文件 三、使用建议 四、文章总结 一、目的 在日常开发中,需要根据不同的场景去记录日志,根据实际…

目录

一、目的

二、解决方案

2.1 下载serilog包

2.2 Serilog配置

2.2.1 使用多个File sink配置不同的最小日志级别

2.2.2 使用Filter条件分流到不同文件

三、使用建议

四、文章总结


一、目的

        在日常开发中,需要根据不同的场景去记录日志,根据实际需求精细化控制日志输出。避免所有类型的日志同时记录在一个日志文件中,产生过多的冗余日志。在.Net开发中,常用的日志记录,有Log4net,Nlog,Serilog等第三方日志库。文章主要讲解Serilog的日志分级记录方式。

        源码地址:https://github.com/serilog/seriloghttps://github.com/serilog/serilog

        支持按场景或组件设置不同日志级别,例如:

  •  Debug ‌:仅记录调试信息
  •  Information ‌:记录常规运行信息
  •  Warning ‌:记录潜在问题警告
  •  Error ‌:记录错误信息

二、解决方案

2.1 下载serilog包

dotnet add packages Serilog

(这是核心日志记录库,提供了结构化日志记录的基础功能,支持多种日志输出方式和灵活的配置选项‌。)

dotnet add packages Serilog.Sinks.Async

(这是一个扩展包,用于异步写入日志,可以提高应用程序性能,避免日志记录阻塞主线程‌。)

dotnet add packages Serilog.Sinks.Console

(这个包用于将日志输出到控制台,方便开发调试时实时查看日志信息‌。)

dotnet add packages Serilog.Sinks.File

(这个包用于将日志写入文件,支持滚动日志文件(按时间或大小分割)等功能,适合生产环境使用‌。)

2.2 Serilog配置

2.2.1 使用多个File sink配置不同的最小日志级别

var log = new LoggerConfiguration()// 信息级别日志.WriteTo.File("logs/information/log-.txt",restrictedToMinimumLevel: LogEventLevel.Information,rollingInterval: RollingInterval.Day)// 错误级别日志.WriteTo.File("logs/error/log-.txt",restrictedToMinimumLevel: LogEventLevel.Error,rollingInterval: RollingInterval.Day)// 调试级别日志.WriteTo.File("logs/debug/log-.txt",restrictedToMinimumLevel: LogEventLevel.Debug,rollingInterval: RollingInterval.Day).CreateLogger();

2.2.2 使用Filter条件分流到不同文件

using Serilog.Events;
using Serilog;
using System;
using System.IO;
using System.Reflection;
using System.Configuration;namespace Demo.Utils
{public class SerilogConfiguration{public static void Config(){//单个文件最大长度为3MBvar _fileSizeLimitBytes = 3 * 1024 * 1024;//初始化logger配置对象var LoggerConfiguration = new LoggerConfiguration();//根据配置文件内容确定日志初始化级别var loglevel = ConfigurationManager.AppSettings["loglevel"];//初始化配置var log = LoggerConfiguration.MinimumLevel.Debug().MinimumLevel.Override("Microsoft", LogEventLevel.Information).Enrich.FromLogContext().WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Information).WriteTo.Async(x => x.File(Path.Combine(AppContext.BaseDirectory, "logs", DateTime.Now.ToString("yyyy-MM-dd"), "Information",$"{Assembly.GetExecutingAssembly().GetName().Name}-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,fileSizeLimitBytes: _fileSizeLimitBytes,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 30))).WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Warning).WriteTo.Async(x => x.File(Path.Combine(AppContext.BaseDirectory, "logs", DateTime.Now.ToString("yyyy-MM-dd"), "Warning",$"{Assembly.GetExecutingAssembly().GetName().Name}-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,fileSizeLimitBytes: _fileSizeLimitBytes,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 30))).WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error).WriteTo.Async(x => x.File(Path.Combine(AppContext.BaseDirectory, "logs", DateTime.Now.ToString("yyyy-MM-dd"), "Error",$"{Assembly.GetExecutingAssembly().GetName().Name}-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,fileSizeLimitBytes: _fileSizeLimitBytes,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 30)));//查看Debug日志,根据配置文件考虑是否开放if (!string.IsNullOrEmpty(loglevel) && loglevel.Equals("0")){log = log.WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Debug).WriteTo.Async(x => x.File(Path.Combine(AppContext.BaseDirectory, "logs", DateTime.Now.ToString("yyyy-MM-dd"), "Debug",$"{Assembly.GetExecutingAssembly().GetName().Name}-.txt"),rollingInterval: RollingInterval.Day,rollOnFileSizeLimit: true,fileSizeLimitBytes: _fileSizeLimitBytes,encoding: System.Text.Encoding.UTF8,retainedFileCountLimit: 30)));}//创建Serilog日志Log.Logger = log.CreateLogger();}}
}

ps:关键配置说明:
1.    restrictedToMinimumLevel: 设置该sink接收的最小日志级别
2.    rollingInterval: 设置日志文件滚动间隔(如每天)
3.    Filter.ByIncludingOnly(): 使用表达式精确筛选要写入的日志级别

三、使用建议

        考虑使用appsettings.json配置,便于修改:

{"Serilog": {"WriteTo": [{"Name": "File","Args": {"path": "logs/information/log-.txt","restrictedToMinimumLevel": "Information","rollingInterval": "Day"}},{"Name": "File","Args": {"path": "logs/error/log-.txt","restrictedToMinimumLevel": "Error","rollingInterval": "Day"}}]}
}

         在 Program.cs 中读取配置并初始化 Serilog

using Serilog;
using Microsoft.Extensions.Configuration;var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();Log.Information("Hello, Serilog with appsettings.json!");
Log.CloseAndFlush();

四、文章总结

        Serilog 是一个功能强大的日志记录库,它提供了丰富的 API 和可插拔的输出器及格式化器,使得开发者能够轻松定制和扩展日志记录功能。同时在学习新的技术的过程中,建议大家可以多看看源代码,很多网络上的内容可能环境和版本不同,不一定完全跑的通。共勉!

http://www.dtcms.com/a/444729.html

相关文章:

  • 本地邵阳网站建设网站托管免费
  • 中国农村建设网站首页自己怎样做广告链接
  • 株洲网站建设优化企业建设网站都需要哪些内容
  • 网站建设主机端口wordpress 给文章添加幻灯
  • 网站做排名2015年网站系统设计
  • 随州网络优化网站建设公司暴雪战网官网
  • 做学校网站需要备案么怎么在网上做广告
  • 洛阳网站建设汉狮怎么样康定网站建设工作室
  • 网站开发公司网站模板建设部设计院网站
  • 贺州住房和城乡建设部网站wordpress 模板 安装
  • 网站开发网站设计案例黄页网站营销
  • 做电影网站怎么挣钱推广自己的网站
  • 设置网站首页在seo优化中
  • 合肥网站建设=388元wordpress文体旋转
  • 营销型网站 案例wordpress登录 不了
  • 投资 公司 网站模板世界足球排名
  • 网站建设视频演示广告游戏
  • 查看网站建设的特点建设网站图片
  • 网站改版要重新备案吗网站建设与维护教程
  • 荆州做网站的公司网站建站常见问题
  • 网站内网页标题对百度排名网站已经申请了域名 接下来怎么
  • 开什么网站暴利淘宝做网站为什么那么便宜
  • 网站建立软件屏蔽收索引擎抓取网站
  • 建设网络文化网站的请示linux wordpress安装教程
  • 网站建设专业导航网站重庆网站建设培训
  • 360网站挂马检测androidapp开发入门
  • 放图片网站代账公司网站模板
  • 吴中区网站建设国外做节目包装的网站
  • 网站iis配置沈阳做网站优化
  • 网站及系统建设维护濮阳网站设计公司