2017年11月27日 星期一

Serilog 初試心得(rookie's Note)


前言:

Serilog是一款給.NET平台的LOG Library,它最大的特色應該是使用事件來驅動,而不是單純的寫下LOG,這點讓它跟其他的Library有很大的不同,而他所提供的多樣Sink讓這點的發揮更加強大。他可以做到同時記下Log,發送信件,存到DB並且傳到Slack中通知維運人員,這些事情都可以在記下Log時一併做完,只需要設定一次。這點是我覺得這個Library最強大的地方。

Source Code

內文:

Serilog除了可以在.NET平台使用外,他還支援了.NET Core,這讓它在非Windows平台上的使用是可能的,Source Code跟以下的文章就是在MAC環境下搭配.NET Core使用Serilog。

開啟一個新的專案後在Dependencies按下右鍵選擇Add Packages,再使用關鍵字「Serilog」查詢~

Image of Packages Manager

/// <summary>
/// My logger.
/// </summary>
public class MyLogger
{
    /// <summary>
    /// The logger.
    /// </summary>
    private ILogger _logger;

    /// <summary>
    /// Initializes a new instance of the <see cref="T:BenSerilogNlog.MyLogger"/> class.
    /// </summary>
    public MyLogger()
    {
        ////最基本的建立Logger的方式
        this._logger = new LoggerConfiguration()
                          .WriteTo.Console()
                          .CreateLogger();
    }

    /// <summary>
    /// Logs the info.
    /// </summary>
    /// <param name="message">Message.</param>
    public void LogInfo(string message){
        this._logger.Information(message);
    }
}

呼叫端可以這樣使用



//// new 一個實體
var myLogger = new MyLogger();

//// 呼叫 Serilog 的 ILogger 介面的方法(紀錄 Info等級的Log)
myLogger.LogInfo("Information");

Console.Read();

這樣就是一個最簡單的Log使用方法。

若要調整Log的紀錄格式可以這樣做簡單的設定:



public MyLogger()
{
    this._logger = new LoggerConfiguration()
         .WriteTo.Console(
             outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}"
         )
         .CreateLogger();
}

以簡單的情境來說,這樣其實就可以做到跟NLog一樣的事情。

沒有留言:

張貼留言