前言:
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」查詢~

/// <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一樣的事情。
沒有留言:
張貼留言