[MDP.Net] 日誌紀錄

MDP.Logging

MDP.Logging是一個.NET開發模組,協助開發人員快速建立具有日誌紀錄的應用系統。提供NLog、Log4net、Serilog等功能模組,用以簡化開發流程並滿足多變的商業需求。

說明文件:https://clark159.github.io/MDP.Net/

程式源碼:https://github.com/Clark159/MDP.Net/

模組功能

MDP.Logging-模組功能.png

模組掛載

MDP.Logging擴充.NET Core既有的日誌紀錄,加入NLog、Log4net、Serilog等功能模組的掛載功能。開發人員可以透過設定Config設定,掛載在執行階段使用的日誌紀錄。

// Config設定
{
  "Logging": {
    "NLog": { "ConfigFile" : "nlog.config"}
  }
}

- 命名空間:Logging
- 模組名稱:NLog
- 模組參數:ConfigFile="nlog.config"。(nlog.config是預設值,可省略)

日誌寫入

MDP.Logging擴充.NET Core既有的日誌紀錄,加入ILogger介面來提供日誌寫入功能,並做為抽象層以減少應用程式對於元件、平台、框架的直接依賴。而在系統底層ILogger介面則是由LoggerAdapter物件實作並轉接.NET Core框架內建的日誌寫入功能。

// Logger
ILogger logger;

// Log
logger.LogError("Hello World");  

ILogger介面:ILogger介面提供日誌寫入功能。

  • 命名空間:
MDP.Logging
  • 類別定義:
public interface ILogger

public interface ILogger<TCategory> : ILogger

- TCategory:寫入日誌的類別(Class)
  • 類別方法:
// Debug
void LogDebug(string message, params object[] args);

void LogDebug(Exception exception, string message, params object[] args);

// Trace
void LogTrace(string message, params object[] args);

void LogTrace(Exception exception, string message, params object[] args);

// Information
void LogInformation(string message, params object[] args);

void LogInformation(Exception exception, string message, params object[] args);

// Warning
void LogWarning(string message, params object[] args);

void LogWarning(Exception exception, string message, params object[] args);

// Error
void LogError(string message, params object[] args);

void LogError(Exception exception, string message, params object[] args);

// Critical
void LogCritical(string message, params object[] args);

void LogCritical(Exception exception, string message, params object[] args);

- message:寫入日誌的訊息內容。
- args:寫入日誌的物件。
- exception:寫入日誌的例外。

模組使用

加入模組

MDP.Logging預設內建在MDP.Net專案範本內,依照下列操作步驟,即可建立包含MDP.Logging模組的專案。

  • 在命令提示字元輸入下列指令,使用MDP.Net專案範本建立專案。
// 建立API服務、Web站台
dotnet new install MDP.WebApp
dotnet new MDP.WebApp -n WebApplication1

// 建立Console程式
dotnet new install MDP.ConsoleApp
dotnet new MDP.ConsoleApp -n ConsoleApp1

取得ILogger

建立包含MDP.Logging模組的專案之後,就可以注入ILogger介面來使用日誌紀錄。

using MDP.Logging;
using Microsoft.AspNetCore.Mvc;

namespace WebApplication1
{
    public class HomeController : Controller
    {
        // Constructors
        public HomeController(ILogger<HomeController> logger)
        {
            // Log
            logger.LogError("Hello World");
        }
    }
}

模組範例

專案開發過程,需要將日誌訊息輸出,方便開發人員觀測系統執行狀況。本篇範例協助開發人員使用MDP.Logging,逐步完成必要的設計和實作。

操作步驟

1.開啟命令提示字元,輸入下列指令。用以安裝MDP.WebApp範本、並且建立一個名為WebApplication1的Web站台。

dotnet new install MDP.WebApp
dotnet new MDP.WebApp -n WebApplication1

2.使用Visual Studio開啟WebApplication1專案。改寫專案內的Controllers\HomeController.cs、Views\Home\Index.cshtml,注入並使用ILogger。

using MDP.Logging;
using Microsoft.AspNetCore.Mvc;

namespace WebApplication1
{
    public class HomeController : Controller
    {
        // Fields
        private readonly ILogger _logger = null;


        // Constructors
        public HomeController(ILogger<HomeController> logger)
        {
            // Default
            _logger = logger;
        }


        // Methods
        public ActionResult Index()
        {
            // Log
            _logger.LogError("Hello World");

            // Return
            return View();
        }
    }
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>WebApplication1</title>
</head>
<body>

    <!--Title-->
    <h2>WebApplication1</h2>
    <hr />

</body>
</html>

3.執行專案,於開啟的Console視窗內,可以看到透過ILogger所寫入的日誌訊息 Hello World。(透過.NET Core底層的ConsoleLogger輸出)

01.執行結果01.png
期許自己
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。