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」查詢~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| /// <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);
}
}
|
呼叫端可以這樣使用
1
2
3
4
5
6
7
| //// new 一個實體
var myLogger = new MyLogger();
//// 呼叫 Serilog 的 ILogger 介面的方法(紀錄 Info等級的Log)
myLogger.LogInfo("Information");
Console.Read();
|
這樣就是一個最簡單的Log使用方法。
若要調整Log的紀錄格式可以這樣做簡單的設定:
1
2
3
4
5
6
7
8
| public MyLogger()
{
this._logger = new LoggerConfiguration()
.WriteTo.Console(
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}"
)
.CreateLogger();
}
|
以簡單的情境來說,這樣其實就可以做到跟NLog一樣的事情。