前言
ASP.NET Core 已有許多的 Logging Provider ,
如果自已實作一個 Color Console 的 Logger 要如何做呢?
實作
需要一個 Config 物件來記錄設定值,Logger 物件來寫 Log,
Logger Provider 物件負責建立 Logger 及 Extensions 物件來簡化註冊 Logger。
1.建立 CustomLoggerConfiguration
1 | public class CustomLoggerConfiguration |
2.建立 Logger 物件
1 | public class CustomLogger : ILogger |
註: Console 並不是 Thread-Safe 物件,所以這裡使用 lock
註: Config 有設定,才會啟用 Log
3.建立 Logger Provider
1 | public class CustomLoggerProvider : |
4.建立 Extensions 物件來簡化註冊 Logger
1 | public static class CustomLoggerExtensions |
5.在 Program.cs 中使用 CustomLogger
1 | //Program.cs |
6.在 appsettings.json 中設定 LogLevel 要顯示的 Color
1 | { |
7.在 HomeControll 中依各 LogLevel 寫出 Log
1 | logger.LogTrace("Log Trace"); |
註: 程式運行中,修改 appsettings.json 中 Debug 為 DarkBlue ,重整頁面,Log 就會套用新的設定值
參考資源
Logging in .NET Core and ASP.NET Core
Implement a custom logging provider in .NET
ConsoleColor Enum