- Microsoft.Extensions.Logging.Console
- Microsoft.Extensions.Logging.AzureAppServices
- Microsoft.Extensions.Logging.Debug
- Microsoft.Extensions.Logging.EventLog
- Microsoft.Extensions.Logging.EventSource
- Microsoft.Extensions.Logging.TraceSource
而 Serilog 则有 File、Console、Elasticsearch、Debug、MSSqlServer、Email等 。
这些日志提供程序有很多 , 我们不必细究;如果一个日志组件 , 不提供兼容 Microsoft.Extensions.Logging 的实现 , 那么根本不应该引入他 。
实际上 , 很多程序是直接 File.Write("Log.txt"), 这种产品质量能好到哪里去呢?
怎么使用
:
前面 , 介绍了 Microsoft.Extensions.Logging 的组成 , 这里将学习如何使用 Logging Provider 输入日志 。
起码提到 , 它只是提供了一个 Logging API , 因此为了输出日志 , 我们必须选择合适的 Logging Provider 程序 , 这里我们选择
Microsoft.Extensions.Logging.Console , 请在 Nuget 中引用这个包 。
下图是 Logging Provider 和 ConsoleLogger 结合使用的结构图:
文章图片
从常规方法来弄 , 配置很麻烦:
ConsoleLoggerProvider consoleLoggerProvider = newConsoleLoggerProvider( newOptionsMonitor<ConsoleLoggerOptions>( newOptionsFactory<ConsoleLoggerOptions>( newIEnumerable<IConfigureOptions<TOptions>(... ... ...)))); 我们可以使用工厂模式或扩展方法快速配置:
using ILoggerFactory loggerFactory =LoggerFactory.Create( builder=> builder.AddSimpleConsole( options=> {options.IncludeScopes = true; options.SingleLine = true; options.TimestampFormat = "hh:mm:ss "; }));
ILoggerFactory loggerFactory = LoggerFactory.Create( builder=> builder.AddConsole); 当然工厂中可以添加其它日志提供程序 , 示例:
using ILoggerFactory loggerFactory =LoggerFactory.Create( builder=> builder.AddSimpleConsole(...).AddFile(...).Add...);然后获取 ILogger 实例:
ILogger logger = loggerFactory.CreateLogger < Program> ; 记录日志:
logger.LogInformation( "记录信息"); 日志等级:
Logging API 中 , 规定了 7 种日志等级 , 其定义如下:
publicenum LogLevel{Debug= 1,Verbose= 2,Information= 3,Warning= 4,Error= 5,Critical= 6,None= int.MaxValue}我们可以通过 ILogger 中的函数 , 输出以下几种等级的日志:
logger.LogInformation( "Logging information."); logger.LogCritical( "Logging critical information."); logger.LogDebug( "Logging debug information."); logger.LogError( "Logging error information."); logger.LogTrace( "Logging trace"); logger.LogWarning( "Logging warning."); 关于 Microsoft.Extensions.Logging 这里就不再赘述 , 读者可以等级以下链接 , 了解更多相关知识:
- https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0#log-exceptions
- https://www.tutorialsteacher.com/core/fundamentals-of-logging-in-dotnet-core
- https://docs.microsoft.com/en-us/archive/msdn-magazine/2016/april/essential-net-logging-with-net-core
Trace、Debug
Debug 、Trace 这两个类的命名空间为 System.Diagnostics , Debug 、Trace 提供一组有助于调试代码的方法和属性 。
读者可以参考笔者的另一篇文章:
输出到控制台:
Trace.Listeners.Add( newTextWriterTraceListener( Console.Out)); Debug.WriteLine("信息"); 链路跟踪
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。