iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 14
1

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

記錄提供者

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

使用 MVC 範本建立專案時,預設會呼叫 WebHost.CreateDefaultBuilder 擴充方法,其中會將 Logging 的設定片段作為日誌紀錄的設定來源,並加入 Console 和 Debug 兩種 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 網站開發 101 共 31 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言