OkoloIt.Utilities.Logging
123 строки · 3.7 Кб
1using System.Runtime.CompilerServices;2
3using OkoloIt.Utilities.Logging.Configuration;4using OkoloIt.Utilities.Logging.Data;5
6namespace OkoloIt.Utilities.Logging;7
8/// <summary>
9/// Синхронный логер.
10/// </summary>
11public class Logger : LoggerBase, ILogger12{
13#region Internal Constructors14
15/// <summary>16/// Создает экземпляр синхронного логера.17/// </summary>18/// <param name="configurations">Конфигурация логера.</param>19/// <param name="action">Метод для вывода сообщения.</param>20internal Logger(LoggerConfiguration configurations, Action<string>? action)21: base(configurations, action)22{23}24
25#endregion Internal Constructors26
27#region Public Methods28
29/// <summary>30/// Выводит сообщение отладки.31/// </summary>32/// <param name="message">Текст сообщения.</param>33public void Debug(34string message,35[CallerMemberName] string member = "",36[CallerFilePath] string file = "",37[CallerLineNumber] int line = 038)39=> WriteMessageSync(LogLevel.Debug, message, member, file, line);40
41/// <summary>42/// Выводит сообщение ошибки.43/// </summary>44/// <param name="message">Текст сообщения.</param>45public void Error(46string message,47[CallerMemberName] string member = "",48[CallerFilePath] string file = "",49[CallerLineNumber] int line = 050)51=> WriteMessageSync(LogLevel.Error, message, member, file, line);52
53/// <summary>54/// Выводит сообщение критической ошибки.55/// </summary>56/// <param name="message">Текст сообщения.</param>57public void Fatal(58string message,59[CallerMemberName] string member = "",60[CallerFilePath] string file = "",61[CallerLineNumber] int line = 062)63=> WriteMessageSync(LogLevel.Fatal, message, member, file, line);64
65/// <summary>66/// Выводит информационное сообщение.67/// </summary>68/// <param name="message">Текст сообщения.</param>69public void Info(70string message,71[CallerMemberName] string member = "",72[CallerFilePath] string file = "",73[CallerLineNumber] int line = 074)75=> WriteMessageSync(LogLevel.Info, message, member, file, line);76
77/// <summary>78/// Выводит сообщение.79/// </summary>80/// <param name="message">Текст сообщения.</param>81public void Trace(82string message,83[CallerMemberName] string member = "",84[CallerFilePath] string file = "",85[CallerLineNumber] int line = 086)87=> WriteMessageSync(LogLevel.Trace, message, member, file, line);88
89/// <summary>90/// Выводит сообщение о не штатном поведении.91/// </summary>92/// <param name="message">Текст сообщения.</param>93public void Warn(94string message,95[CallerMemberName] string member = "",96[CallerFilePath] string file = "",97[CallerLineNumber] int line = 098)99=> WriteMessageSync(LogLevel.Warn, message, member, file, line);100
101#endregion Public Methods102
103#region Private Methods104
105private void WriteMessageSync(106LogLevel level,107string message,108string member,109string file,110int line111)112{113LogMessage log = new(level, message) {114CallerMember = member,115CallerFile = Path.GetFileNameWithoutExtension(file) ?? file,116CallerLine = line117};118
119WriteMessage(log);120}121
122#endregion123}