iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 14
1

ASP.NET Core 框架提供的 logging API 讓開發人員可以輕鬆地使用內建或第三方的日誌紀錄框架。今天來說明怎麼在 ASP.NET Core 應用程式中紀錄將錯誤或相關資訊。

記錄提供者

Configuration 類似,ASP.NET Core 使用的日誌紀錄是由 LoggingProvider 來設定。

使用 MVC 範本建立專案時,預設會呼叫 WebHost.CreateDefaultBuilder 擴充方法,其中會將 Logging 的設定片段作為日誌紀錄的設定來源,並加入 ConsoleDebug 兩種 provider。或者也可以在呼叫 ConfigureLogging 擴充方法時,先呼叫 ClearProvider 後再依需求加入 provider

public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
    var startupAssemblyName = typeof(Startup).GetTypeInfo().Assembly.FullName;

    return WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging((hostContext, loggingBuilder) =>
        {
            loggingBuilder.ClearProviders();
            loggingBuilder.AddConfiguration(hostContext.Configuration.GetSection("Logging"));
            loggingBuilder.AddConsole();
            loggingBuilder.AddDebug();
        })
        .UseStartup(startupAssemblyName);
}

寫入日誌紀錄

在應用程式啟動正確設定記錄方式後,可以在需要使用記錄的類別注入 ILogger<TCategoryName> 實例,再呼叫 _logger.Log{LogLevel} 就可以將訊息寫到日誌記錄中。

public class LoggerController : Controller
{
    private readonly ILogger<LoggerController> _logger;

    public LoggerController(ILogger<LoggerController> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        _logger.LogWarning("Log Information in LoggerController");
        return View();
    }
}

設定

日誌記錄可以透過前兩天說明的設定來源來做設定,通常會寫在設定中的 Logging 片段。例如在 MVC 範本建立的專案中的 appsettings.Development.json 檔案:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

LogLevel 可以設定在不同命名空間下預設的記錄等級 (LogLevel)。也可以用 {ProviderName} 屬性來對不同提供者做設定,例如:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    },
    "Console": {
        "ironman2018": "Warning"
    }
  }
}

記錄等級

呼叫 _logger.Log{LogLevel} 時可以寫入對應記錄等級的日誌記錄。在設定檔中設定的 LogLevel 代表接受的最低等級。ASP.NET Core 框架中提供的記錄等級由嚴重性低到高分別為:

  • Trace = 0
  • Debug = 1
  • Information = 2
  • Warning = 3
  • Error = 4
  • Critical = 5

關於不同等級的說明跟適用情境,剛好前陣子看到有人分享不錯的文章可以參考:日志的5个级别

參考資料


上一篇
Configuration 組態設定 - 2/2
下一篇
番外篇 - NLog
系列文
.Net Core 網站開發 10131
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言