.NET6 MiniAPI日志改写,如何实现高效日志管理?

2026-03-30 14:171阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计875个文字,预计阅读时间需要4分钟。

.NET6 MiniAPI日志改写,如何实现高效日志管理?

说明:本篇简要介绍日志中常用的几个点,关于日志,后面会提到三方日志框架的程序及在MiniAPI中,可以通过方法或构造函数中,获取框架自动注入的日志类型,如下所示:

javaapp.Ma.log.info(这是一条info日志);app.Ma.log.error(这是一条error日志);

  说明:本篇简单说一下日志中常用的几个点,关于日志,后面重点会说到三方日志提供程序

  在MiniAPI中,可以通过方法或构造函数中,获取框架自动注入的日志类型,如下方式:

app.MapGet("/test", (ILogger<Program> logger) =>
{
logger.LogInformation(new EventId(1234), "Information");
return "ok";
});

public class LogDemoService
{
private readonly ILogger<LogDemoService> _logger;
public LogDemoService(ILogger<LogDemoService> logger)
{
_logger = logger;
}

public void Demo01()
{
_logger.LogInformation("demo01");
}
}

日志的级别:

public enum LogLevel
{
Trace,
Debug,
Information,
Warning,
Error,
Critical,
None
}

​Trace​​= 0、​​Debug​​= 1、​​Information​​= 2、​​Warning​​= 3、​​Error​​= 4、​​Critical​​= 5 和​​None​​= 6。日志级别对应的方法:LogTrace(),LogDebug(),LogInformation(),LogWarning(),LogError(),LogCritical()。

日志配置:

当ASPNETCORE_ENVIRONMENT环境变量配置不同时,asp.net core会读取不同的配置文件,当在vs中进行开发时,通常这个变量值为Development,开发环境下的日志配置,appsettings.Development.json

"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft.AspNetCore": "Warning"
}

  生产环境下的日志配置,appsettings.json  

"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}

  Logging下的第一级通常是日志提供程序,内置的提供程序有

  • 控制台
  • 调试
  • EventSource
  • EventLog
  • AzureAppServicesFile
  • AzureAppServicesBlob
  • ApplicationInsights

  比如控制台提供程序配置如下,IncludeScopes是否日志在输出时带有作用域信息,LogLevel是不同类别的日志输出级别,比如默认的是Information和以上的级别才会输出到控件台上,Microsoft.AspNetCore是警告级别和以上的才会输出,而我自定义的MiniAPICourse.Sevices是Debug和以上的级别都会输出,利用这个设置可以重点输出自己开发功能的低级别日志。

"Logging": {
"Console": {
"IncludeScopes": true,
"LogLevel": {
"Microsoft.AspNetCore": "Warning",
"Default": "Information",
"MiniAPICourse.Services": "Debug"
}
}
}

  如果在日志配置中直接写LogLevel,则应用到所有日志提供程序,如appsettings.Development.json和appsettings.json中的写法。

日志类别:

在从服务容器获取日志时,要带上当前所在的类名,如LogDemoService,就是当前日志的类别,所有使用这个_logger的输出,都带有这个类型的名称。

private readonly ILogger<LogDemoService> _logger;

关于上图中类型后面的[0],就是日志事件ID,可以输出日志是填上。

.NET6 MiniAPI日志改写,如何实现高效日志管理?

  想要更快更方便的了解相关知识,可以关注微信公众号

本文共计875个文字,预计阅读时间需要4分钟。

.NET6 MiniAPI日志改写,如何实现高效日志管理?

说明:本篇简要介绍日志中常用的几个点,关于日志,后面会提到三方日志框架的程序及在MiniAPI中,可以通过方法或构造函数中,获取框架自动注入的日志类型,如下所示:

javaapp.Ma.log.info(这是一条info日志);app.Ma.log.error(这是一条error日志);

  说明:本篇简单说一下日志中常用的几个点,关于日志,后面重点会说到三方日志提供程序

  在MiniAPI中,可以通过方法或构造函数中,获取框架自动注入的日志类型,如下方式:

app.MapGet("/test", (ILogger<Program> logger) =>
{
logger.LogInformation(new EventId(1234), "Information");
return "ok";
});

public class LogDemoService
{
private readonly ILogger<LogDemoService> _logger;
public LogDemoService(ILogger<LogDemoService> logger)
{
_logger = logger;
}

public void Demo01()
{
_logger.LogInformation("demo01");
}
}

日志的级别:

public enum LogLevel
{
Trace,
Debug,
Information,
Warning,
Error,
Critical,
None
}

​Trace​​= 0、​​Debug​​= 1、​​Information​​= 2、​​Warning​​= 3、​​Error​​= 4、​​Critical​​= 5 和​​None​​= 6。日志级别对应的方法:LogTrace(),LogDebug(),LogInformation(),LogWarning(),LogError(),LogCritical()。

日志配置:

当ASPNETCORE_ENVIRONMENT环境变量配置不同时,asp.net core会读取不同的配置文件,当在vs中进行开发时,通常这个变量值为Development,开发环境下的日志配置,appsettings.Development.json

"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft.AspNetCore": "Warning"
}

  生产环境下的日志配置,appsettings.json  

"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}

  Logging下的第一级通常是日志提供程序,内置的提供程序有

  • 控制台
  • 调试
  • EventSource
  • EventLog
  • AzureAppServicesFile
  • AzureAppServicesBlob
  • ApplicationInsights

  比如控制台提供程序配置如下,IncludeScopes是否日志在输出时带有作用域信息,LogLevel是不同类别的日志输出级别,比如默认的是Information和以上的级别才会输出到控件台上,Microsoft.AspNetCore是警告级别和以上的才会输出,而我自定义的MiniAPICourse.Sevices是Debug和以上的级别都会输出,利用这个设置可以重点输出自己开发功能的低级别日志。

"Logging": {
"Console": {
"IncludeScopes": true,
"LogLevel": {
"Microsoft.AspNetCore": "Warning",
"Default": "Information",
"MiniAPICourse.Services": "Debug"
}
}
}

  如果在日志配置中直接写LogLevel,则应用到所有日志提供程序,如appsettings.Development.json和appsettings.json中的写法。

日志类别:

在从服务容器获取日志时,要带上当前所在的类名,如LogDemoService,就是当前日志的类别,所有使用这个_logger的输出,都带有这个类型的名称。

private readonly ILogger<LogDemoService> _logger;

关于上图中类型后面的[0],就是日志事件ID,可以输出日志是填上。

.NET6 MiniAPI日志改写,如何实现高效日志管理?

  想要更快更方便的了解相关知识,可以关注微信公众号