OkoloIt.Utilities.Logging

Форк
0
123 строки · 3.7 Кб
1
using System.Runtime.CompilerServices;
2

3
using OkoloIt.Utilities.Logging.Configuration;
4
using OkoloIt.Utilities.Logging.Data;
5

6
namespace OkoloIt.Utilities.Logging;
7

8
/// <summary>
9
/// Синхронный логер.
10
/// </summary>
11
public class Logger : LoggerBase, ILogger
12
{
13
    #region Internal Constructors
14

15
    /// <summary>
16
    /// Создает экземпляр синхронного логера.
17
    /// </summary>
18
    /// <param name="configurations">Конфигурация логера.</param>
19
    /// <param name="action">Метод для вывода сообщения.</param>
20
    internal Logger(LoggerConfiguration configurations, Action<string>? action)
21
        : base(configurations, action)
22
    {
23
    }
24

25
    #endregion Internal Constructors
26

27
    #region Public Methods
28

29
    /// <summary>
30
    /// Выводит сообщение отладки.
31
    /// </summary>
32
    /// <param name="message">Текст сообщения.</param>
33
    public void Debug(
34
        string message,
35
        [CallerMemberName] string member = "",
36
        [CallerFilePath] string file = "",
37
        [CallerLineNumber] int line = 0
38
    )
39
        => WriteMessageSync(LogLevel.Debug, message, member, file, line);
40

41
    /// <summary>
42
    /// Выводит сообщение ошибки.
43
    /// </summary>
44
    /// <param name="message">Текст сообщения.</param>
45
    public void Error(
46
        string message,
47
        [CallerMemberName] string member = "",
48
        [CallerFilePath] string file = "",
49
        [CallerLineNumber] int line = 0
50
    )
51
        => WriteMessageSync(LogLevel.Error, message, member, file, line);
52

53
    /// <summary>
54
    /// Выводит сообщение критической ошибки.
55
    /// </summary>
56
    /// <param name="message">Текст сообщения.</param>
57
    public void Fatal(
58
        string message,
59
        [CallerMemberName] string member = "",
60
        [CallerFilePath] string file = "",
61
        [CallerLineNumber] int line = 0
62
    )
63
        => WriteMessageSync(LogLevel.Fatal, message, member, file, line);
64

65
    /// <summary>
66
    /// Выводит информационное сообщение.
67
    /// </summary>
68
    /// <param name="message">Текст сообщения.</param>
69
    public void Info(
70
        string message,
71
        [CallerMemberName] string member = "",
72
        [CallerFilePath] string file = "",
73
        [CallerLineNumber] int line = 0
74
    )
75
        => WriteMessageSync(LogLevel.Info, message, member, file, line);
76

77
    /// <summary>
78
    /// Выводит сообщение.
79
    /// </summary>
80
    /// <param name="message">Текст сообщения.</param>
81
    public void Trace(
82
        string message,
83
        [CallerMemberName] string member = "",
84
        [CallerFilePath] string file = "",
85
        [CallerLineNumber] int line = 0
86
    )
87
        => WriteMessageSync(LogLevel.Trace, message, member, file, line);
88

89
    /// <summary>
90
    /// Выводит сообщение о не штатном поведении.
91
    /// </summary>
92
    /// <param name="message">Текст сообщения.</param>
93
    public void Warn(
94
        string message,
95
        [CallerMemberName] string member = "",
96
        [CallerFilePath] string file = "",
97
        [CallerLineNumber] int line = 0
98
    )
99
        => WriteMessageSync(LogLevel.Warn, message, member, file, line);
100

101
    #endregion Public Methods
102

103
    #region Private Methods
104

105
    private void WriteMessageSync(
106
        LogLevel level, 
107
        string message,
108
        string member, 
109
        string file, 
110
        int line
111
    )
112
    {
113
        LogMessage log = new(level, message) {
114
            CallerMember = member,
115
            CallerFile = Path.GetFileNameWithoutExtension(file) ?? file,
116
            CallerLine = line
117
        };
118

119
        WriteMessage(log);
120
    }
121

122
    #endregion 
123
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.