OkoloIt.Utilities.Logging
96 строк · 2.6 Кб
1using System.Text;
2
3using OkoloIt.Utilities.Logging.Configuration;
4
5namespace OkoloIt.Utilities.Logging.Data;
6
7/// <summary>
8/// Данные лога.
9/// </summary>
10public sealed class LogMessage
11{
12#region Internal Constructors
13
14/// <summary>
15/// Сохдает экземпляр данных лога.
16/// </summary>
17/// <param name="level">Уровень лога.</param>
18/// <param name="message">Сообщение.</param>
19internal LogMessage(LogLevel level, string message)
20{
21Level = level;
22Message = message;
23DateTime = DateTime.Now;
24}
25
26#endregion Internal Constructors
27
28#region Internal Properties
29
30/// <summary>
31/// Файл, в котором произошло обращение к логеру.
32/// </summary>
33internal string CallerFile { get; init; } = string.Empty;
34
35/// <summary>
36/// Строка, в которой произошло обращение к логеру.
37/// </summary>
38internal int CallerLine { get; init; } = 0;
39
40/// <summary>
41/// Метод, в котором произошло обращение к логеру.
42/// </summary>
43internal string CallerMember { get; init; } = string.Empty;
44
45/// <summary>
46/// Время создания лога.
47/// </summary>
48internal DateTime DateTime { get; }
49
50/// <summary>
51/// Уровень лога.
52/// </summary>
53internal LogLevel Level { get; }
54
55/// <summary>
56/// Сообщение лога.
57/// </summary>
58internal string Message { get; } = string.Empty;
59
60#endregion Internal Properties
61
62#region Internal Methods
63
64/// <summary>
65/// Получает строковое представление уровня лога.
66/// </summary>
67/// <returns>Название уровня лога.</returns>
68internal string GetLevel()
69{
70return $"[{Level}]".ToUpper()
71.PadRight(7, ' ');
72}
73
74/// <summary>
75/// Возвращает собранное сообщение лога.
76/// </summary>
77/// <returns>Собранное сообщение лога.</returns>
78internal string GetLog(string format)
79{
80try {
81return new StringBuilder().Append(string.Format(
82format,
83DateTime,
84CallerFile,
85CallerLine
86))
87.Append(Message)
88.ToString();
89}
90catch {
91throw new ArgumentException("Некорректная строка формата!");
92}
93}
94
95#endregion Internal Methods
96}