-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSerilogTemplateBuilder.cs
84 lines (68 loc) · 2.93 KB
/
SerilogTemplateBuilder.cs
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using Serilog.ConfigHelper.Internal;
namespace Serilog.ConfigHelper;
public class SerilogTemplateBuilder
{
private const string LevelTemplate = "{Level:u3}";
private const string TimeStampTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}";
private const string MessageTemplate = "{Message:lj}";
private const string ExceptionTemplate = "{NewLine}{Exception}";
// private readonly string _template;
private readonly List<TemplateElement> _list;
public SerilogTemplateBuilder() {
_list = new List<TemplateElement>();
// _template = string.Empty;
}
private int LastElementOrderNumber() {
return _list.Count == 0 ? 0 : _list.Max(x => x.Order);
}
public SerilogTemplateBuilder AddTimeStamp(bool useSquareBracket = false) {
var order = LastElementOrderNumber() + 1;
if (useSquareBracket) {
_list.Add(new TemplateElement(order, TemplateElementType.Timestamp, $"[{TimeStampTemplate}]"));
return this;
}
_list.Add(new TemplateElement(order, TemplateElementType.Timestamp, TimeStampTemplate));
return this;
}
public SerilogTemplateBuilder AddLevel(bool useSquareBracket = true) {
var order = LastElementOrderNumber() + 1;
if (useSquareBracket) {
_list.Add(new TemplateElement(order, TemplateElementType.Level, $"[{LevelTemplate}]"));
return this;
}
_list.Add(new TemplateElement(order, TemplateElementType.Level, LevelTemplate));
return this;
}
public SerilogTemplateBuilder AddMessage(bool useSquareBracket = false) {
var order = LastElementOrderNumber() + 1;
if (useSquareBracket) {
_list.Add(new TemplateElement(order, TemplateElementType.Message, $"[{MessageTemplate}]"));
return this;
}
_list.Add(new TemplateElement(order, TemplateElementType.Message, MessageTemplate));
return this;
}
public SerilogTemplateBuilder AddException() {
var order = LastElementOrderNumber() + 1;
_list.Add(new TemplateElement(order, TemplateElementType.Exception, ExceptionTemplate));
return this;
}
public SerilogTemplateBuilder AddProperty(string propertyName, bool useSquareBracket = false) {
var order = LastElementOrderNumber() + 1;
if (useSquareBracket)
propertyName = $"[{{{propertyName}}}]";
else
propertyName = $"{{{propertyName}}}";
_list.Add(new TemplateElement(order, TemplateElementType.Property, propertyName));
return this;
}
public SerilogTemplateBuilder AddNewLine() {
var order = LastElementOrderNumber() + 1;
_list.Add(new TemplateElement(order, TemplateElementType.NewLine, Environment.NewLine));
return this;
}
public string Build() {
var template = string.Join(" ", _list.OrderBy(x => x.Order).Select(x => x.Template));
return template;
}
}