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

自己做网站的网址wordpress xml生成免插件

自己做网站的网址,wordpress xml生成免插件,asp网站自动识别手机,推广普通话ppt课件免费针对控制台的ILogger实现类型为ConsoleLogger#xff0c;对应的ILoggerProvider实现类型为ConsoleLoggerProvider#xff0c;这两个类型都定义在 NuGet包“Microsoft.Extensions.Logging.Console”中。ConsoleLogger要将一条日志输出到控制台上#xff0c;首选要解决的是格式…针对控制台的ILogger实现类型为ConsoleLogger对应的ILoggerProvider实现类型为ConsoleLoggerProvider这两个类型都定义在 NuGet包“Microsoft.Extensions.Logging.Console”中。ConsoleLogger要将一条日志输出到控制台上首选要解决的是格式化的问题具体来说是如何将日志消息的内容荷载和元数据类别、等级和事件ID等格式化成呈现在控制台上的文本。针对日志的格式化由ConsoleFormatter对象来完成。[本文节选《ASP.NET Core 6框架揭秘》第9章][S901]SimpleConsoleFormatter格式化器源代码[S902]SystemdConsoleFormatter格式化器源代码[S903]JsonConsoleFormatter格式化器源代码[S904]改变ConsoleLogger的标准输出和错误输出源代码[S905]自定义控制台日志的格式化器源代码[S901]SimpleConsoleFormatter格式化器下面的代码演示了如何使用SimpleConsoleFormatter来格式化控制台输出的日志。我们利用命令行参数控制是否采用单行文本输出和着色方案。在调用ILoggingBuiler接口的AddConsole扩展方法对ConsoleLoggerProvider对象进行注册之后我们接着调用它的AddSimpleConsole扩展方法将SimpleConsoleFormatter作为格式化器并利用作为参数的ActionSimpleConsoleFormatterOptions委托根据命令行参数的对SimpleConsoleFormatterOptions配置选项进行了相应设置S901。using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console;var configuration  new ConfigurationBuilder().AddCommandLine(args).Build(); var singleLine  configuration.GetSection(singleLine).Getbool(); var colorBebavior  configuration.GetSection(color).GetLoggerColorBehavior();var logger  LoggerFactory.Create(builder  builder.AddConsole().AddSimpleConsole(options {options.SingleLine  singleLine;options.ColorBehavior  colorBebavior;})).CreateLoggerProgram(); var levels  (LogLevel[])Enum.GetValues(typeof(LogLevel)); levels  levels.Where(it  it ! LogLevel.None).ToArray(); var eventId  1; Array.ForEach(levels,level  logger.Log(level, eventId, This is a/an {0} log message., level)); Console.Read();我们已命名行的方式三次启动演示程序并利用参数singleLinetrue, colorDisabled控制对应的格式化行为。从图1所示的结果可以看出日志输出的格式是与我们指定的命名行参数是匹配的。图1 基于SimpleConsoleFormatter的格式化[S902]SystemdConsoleFormatter格式化器我们使用如下这个实例来演示针对SystemdConsoleFormatter的格式化。如代码片段所示我们利用命令行参数“includeScopes”来决定是否支持日志范围。在调用ILoggingBuilder接口的AddConsole扩展方法ConsoleLoggerProvider对象进行注册之后我们接着调用了该接口的AddSystemdConsole扩展方法对SystemdConsoleFormatter及其配置选项进行注册。为了输出所有等级的日志我们将最低日志等级设置为Trace。为了体现针对异常信息的输出我们在调用Log方法时传入了一个Exception对象。using Microsoft.Extensions.Logging;var includeScopes  args.Contains(includeScopes); var logger  LoggerFactory.Create(builder  builder.SetMinimumLevel(LogLevel.Trace).AddConsole().AddSystemdConsole(options  options.IncludeScopes  includeScopes)).CreateLoggerProgram(); var levels  (LogLevel[])Enum.GetValues(typeof(LogLevel)); levels  levels.Where(it  it ! LogLevel.None).ToArray(); var eventId  1; Array.ForEach(levels, Log); Console.Read();void Log(LogLevel logLevel) {using (logger.BeginScope(Foo)){using (logger.BeginScope(Bar)){using (logger.BeginScope(Baz)){logger.Log(logLevel, eventId, new Exception(Error...), This is a/an {0} log message., logLevel);}}} }我们采用命令行的方式两次启动演示程序第一次采用默认配置第二次利用命令行参数“includeScopes”开启针对日志范围的支持。从图2所示的输出结果可以看出六条日志均以单条文本的形式输出到控制台上对应的日志等级Trace、Debug、Information、Warning、Error和Critical均被转换成Syslog日志等级7、7、6、4、3和2。图2 基于SystemdConsoleFormatter的格式化[S903]JsonConsoleFormatter格式化器我们对上面的演示程序略加改动将针对ILoggingBuilder接口的AddSystemdConsole扩展方法的调用替换成调用AddJsonConsole扩展方法后者帮助我们完成针对JsonConsoleFormatter及其配置选项的注册。为了减少控制台上输出的内容我们移除了针对最低日志等级的设置。using Microsoft.Extensions.Logging;var includeScopes  args.Contains(includeScopes);var logger  LoggerFactory.Create(builder  builder.AddConsole().AddJsonConsole(options  options.IncludeScopes  includeScopes)).CreateLoggerProgram(); var levels  (LogLevel[])Enum.GetValues(typeof(LogLevel)); levels  levels.Where(it  it ! LogLevel.None).ToArray(); var eventId  1; Array.ForEach(levels, Log);Console.Read();void Log(LogLevel logLevel) {using (logger.BeginScope(Foo)){using (logger.BeginScope(Bar)){using (logger.BeginScope(Baz)){logger.Log(logLevel, eventId, new Exception(Error...), This is a/an {0} log message., logLevel);}}} }我们依然采用上面的方式两次执行改动后的程序。在默认以及开启日志范围的情况下控制台分别具有图3所示的输出。可以看出输出的内容不仅包含参数填充生成完整内容还包含原始的模板。日志范围的路径是以数组的方式输出的。图3 基于JsonConsoleFormatter的格式化[S904]改变ConsoleLogger的标准输出和错误输出ConsoleLogger具有“标准输出”和“错误输出”两个输出渠道分别对应着Console类型的静态属性Out和Error返回的TextWriter对象。对于不高于LogToStandardErrorThreshold设定等级的日志会采用标准输出高于或者等于该等级的日志则采用错误输出。由于LogToStandardErrorThreshold属性的默认值为None所以任何等级的日志都被写入标准输出。如下的代码片段演示了如何通过设置这个属性改变不同等级日志的输出渠道。using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console;using (var out  new StreamWriter(out.log) { AutoFlush  true }) using (var error  new StreamWriter(error.log) { AutoFlush  true }) {Console.SetOut(out);Console.SetError(error);var logger  LoggerFactory.Create(builder  builder.SetMinimumLevel(LogLevel.Trace).AddConsole(options options.LogToStandardErrorThreshold  LogLevel.Error).AddSimpleConsole(options options.ColorBehavior  LoggerColorBehavior.Disabled)).CreateLoggerProgram();var levels  (LogLevel[])Enum.GetValues(typeof(LogLevel));levels  levels.Where(it  it ! LogLevel.None).ToArray();var eventId  1;Array.ForEach(levels, Log);Console.Read();void Log(LogLevel logLevel)  logger.Log(logLevel, eventId, This is a/an {0} log message., logLevel); }如上面的代码片段所示我们创建了两个针对本地文件out.log和error.log的StreamWriter并通过调用Console类型的静态方法SetOut和SetError将其设置为控制台的标准输出和错误输出。在针对ILogingBuilder接口的AddConsole扩展方法调用中我们将配置选项ConsoleLoggerOptions的LogToStandardErrorThreshold属性设置为Error并调用SetMinimumLevel方法将最低日志等级设置为Trace。我们还调用AddSimpleConsole扩展方法禁用作色方案。当程序运行之后针对具有不同等级的六条日志四条不高于Error的日志被输出到如图4所示的out.log中另外两条则作为错误日志被输出到error.log中控制台上将不会有任何输出内容。图4 标准输入和错误输出[S905]自定义控制台日志的格式化器为了能够更加灵活地控制日志在控制台上的输出格式我们自定义了如下这个格式化器类型。如代码片段所示这个名为TemplatedConsoleFormatter会按照指定的模板来格式化输出的日志内容它使用的配置选项类型为TemplatedConsoleFormatterOptions日志格式模板就体现在它的Template属性上。public class TemplatedConsoleFormatter : ConsoleFormatter {private readonly bool _includeScopes;private readonly string _tempalte;public TemplatedConsoleFormatter(IOptionsTemplatedConsoleFormatterOptions options): base(templated){_includeScopes  options.Value.IncludeScopes;_tempalte  options.Value?.Template?? [{LogLevel}]{Category}/{EventId}:{Message}\n{Scopes}\n;}public override void WriteTState(in LogEntryTState logEntry, IExternalScopeProvider scopeProvider, TextWriter textWriter){var builder  new StringBuilder(_tempalte);builder.Replace({Category}, logEntry.Category);builder.Replace({EventId}, logEntry.EventId.ToString());builder.Replace({LogLevel}, logEntry.LogLevel.ToString());builder.Replace({Message}, logEntry.Formatter?.Invoke(logEntry.State, logEntry.Exception));if (_includeScopes  scopeProvider ! null){var buidler2  new StringBuilder();var writer  new StringWriter(buidler2);scopeProvider.ForEachScope(WriteScope, writer);void WriteScope(object? scope, StringWriter state){writer.Write(  scope);}builder.Replace({Scopes}, buidler2.ToString());}textWriter.Write(builder);} }public class TemplatedConsoleFormatterOptions: ConsoleFormatterOptions {public string? Template { get; set; } }我们将TemplatedConsoleFormatter的别名指定为“templated”格式模板利用占位符“{Category}”、“{EventId}”、“{LogLevel}”、“{Message}”和“{Scopes}”表示日志类别、事件ID、等级、消息和范围信息。“[{LogLevel}]{Category}/{EventId}:{Message}\n{Scopes}\n”是我们提供的默认模板。现在我们采用如下这个名为appsettings.json的JSON文件来提供所有的配置。{Logging: {Console: {FormatterName: templated,LogToStandardErrorThreshold: Error,FormatterOptions: {IncludeScopes: true,UseUtcTimestamp: true,Template: [{LogLevel}]{Category}:{Message}\n}}} }如上面的代码片段所示我们将控制台日志输出的相关设置定义在“Logging:Console”配置节中并定义了格式化器名称“templated”、错误日志最低等级“Error”。“FormatterOptions”配置节的内容将最终绑定到TemplatedConsoleFormatterOptions配置选项上。在如下所示的演示程序中我们加载这个配置文件并提取代表“Logging”配置节的IConfigguration对象我们将这个对象作为参数调用ILoggingBuilder接口的AddConfiguration扩展方法进行了注册。using App; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging;var logger  LoggerFactory.Create(Configure).CreateLoggerProgram();var levels  (LogLevel[])Enum.GetValues(typeof(LogLevel)); levels  levels.Where(it  it ! LogLevel.None).ToArray(); var eventId  1; Array.ForEach(levels, Log); Console.Read();void Configure(ILoggingBuilder builder) {var configuration  new ConfigurationBuilder().AddJsonFile(appsettings.json).Build().GetSection(Logging);builder.AddConfiguration(configuration).AddConsole().AddConsoleFormatterTemplatedConsoleFormatter,TemplatedConsoleFormatterOptions(); }void Log(LogLevel logLevel)  logger.Log(logLevel, eventId, This is a/an {0} log message., logLevel);在调用ILoggingBuilder接口的AddConsole扩展方法对ConsoleLoggerProvider进行注册之后我们调用了它的AddConsoleFormatterTemplatedConsoleFormatter,TemplatedConsoleFormatterOptions方法该方法将利用配置来绑定注册格式化器对应的TemplatedConsoleFormatterOptions配置选项。演示程序启动之后每一条日志将按照配置中提供的模板进行格式化并以图5所示的形式输出到控制台上。图5 基于TemplatedConsoleFormatter的格式化《ASP.NET Core 6框架揭秘》实例演示[01]编程初体验《ASP.NET Core 6框架揭秘》实例演示[02]各种形式的API开发《ASP.NET Core 6框架揭秘》实例演示[03]Dapr初体验《ASP.NET Core 6框架揭秘》实例演示[04]自定义依赖注入框架《ASP.NET Core 6框架揭秘》实例演示[05]依赖注入基本编程模式《ASP.NET Core 6框架揭秘》实例演示[06]依赖注入框架设计细节《ASP.NET Core 6框架揭秘》实例演示[07]文件系统《ASP.NET Core 6框架揭秘》实例演示[08]配置的基本编程模式《ASP.NET Core 6框架揭秘》实例演示[09]将配置绑定为对象《ASP.NET Core 6框架揭秘》实例演示[10]Options基本编程模式《ASP.NET Core 6框架揭秘》实例演示[11]诊断跟踪的几种基本编程方式 《ASP.NET Core 6框架揭秘》实例演示[13]日志的基本编程模式《ASP.NET Core 6框架揭秘》实例演示[14]日志的进阶用法
http://www.zqtcl.cn/news/811042/

相关文章:

  • 北京做网站优化多少钱网站反链和外链的区别
  • 厦门网站推广找谁wordpress的模板目录在哪里
  • 做网站的维护成本wordpress 密码更改
  • 企业网站建设流程概述长春网站推广排名
  • 网站导航设计牙科 网站建设方案
  • 手机微信网站开发教程企业网站的制作成本
  • 做电商网站的流程网站架构搭建
  • 可以下载新闻视频的网站重庆seo
  • 网站内容页设计网站建设实验分析
  • 网站建设的软硬件环境凡科精选app
  • 网站开发过滤器作用信息港怎么发布信息
  • 网站服务器组建百度seo引流怎么做
  • 南京网站定制公司如何用源码做网站
  • 网站建站视频wordpress网站好用吗
  • 网页设计网站搭建建筑材料价格信息网
  • 淮安市交通建设局网站新郑做网站
  • 新开传奇网站手机版深圳房管局官网
  • 重庆网站建设营销深圳微商城网站设计公司
  • 用织梦做的网站是模板的吗外贸展示型模板网站
  • 网站seo的关键词排名怎么做的定制和订制
  • 自适应网站做多大尺寸的四川建设厅电话网站
  • 易语言可以做网站了吗电商平台排名100强
  • 网站代码开发方式影视公司网页设计
  • 如何选择网站定制公司响水专业做网站
  • 海门建网站公司凡客模板wordpress
  • 网站关键字排名php开源cms
  • 手机商城手机网站建设多少钱明水县网站建设
  • 北京网站优化外包做板材外贸一般用哪个网站
  • 北京建设网站有哪些公司药店网站模板
  • 网站欢迎页面怎么做个人简历免费模板下载