Язык программирования C#9 и платформа .NET5
Часть 593 из 642 Информация о книге
namespace AutoLot.Services.Logging{public class AppLogging<T> : IAppLogging<T>{private readonly ILogger<T> _logger;private readonly IConfiguration _config;private readonly string _applicationName;public AppLogging(ILogger<T> logger, IConfiguration config){_logger = logger;_config = config;_applicationName = config.GetValue<string>("ApplicationName");}}}Инфраструктура Serilog позволяет добавлять свойства в стандартный процесс ведения журнала, заталкивая их внутрь
. Добавьте внутренний метод для заталкивания свойствLogContext,MemberName,FilePathиLineNumber:ApplicationNameinternal List<IDisposable> PushProperties(string memberName,string sourceFilePath,int sourceLineNumber){List<IDisposable> list = new List<IDisposable>{LogContext.PushProperty("MemberName", memberName),LogContext.PushProperty("FilePath", sourceFilePath),LogContext.PushProperty("LineNumber", sourceLineNumber),LogContext.PushProperty("ApplicationName", _applicationName)};return list;}Каждая реализация метода следует одному и тому же процессу. На первом шаге вызывается метод
для добавления дополнительных свойств и затем соответствующий метод регистрации в журнале, предоставляемыйPushProperties()вLoggerExtensions. Ниже приведены все реализованные методы интерфейса:ILogger<T>public void LogAppError(Exception exception, string message,[CallerMemberName] string memberName = "",[CallerFilePath] string sourceFilePath = "",[CallerLineNumber] int sourceLineNumber = 0){var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);_logger.LogError(exception, message);foreach (var item in list){item.Dispose();}}public void LogAppError(string message,[CallerMemberName] string memberName = "",[CallerFilePath] string sourceFilePath = "",[CallerLineNumber] int sourceLineNumber = 0){var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);_logger.LogError(message);foreach (var item in list){item.Dispose();}}public void LogAppCritical(Exception exception, string message,[CallerMemberName] string memberName = "",[CallerFilePath] string sourceFilePath = "",[CallerLineNumber] int sourceLineNumber = 0){var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);_logger.LogCritical(exception, message);foreach (var item in list){item.Dispose();}}public void LogAppCritical(string message,[CallerMemberName] string memberName = "",[CallerFilePath] string sourceFilePath = "",[CallerLineNumber] int sourceLineNumber = 0){var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);_logger.LogCritical(message);foreach (var item in list){item.Dispose();}}public void LogAppDebug(string message,[CallerMemberName] string memberName = "",[CallerFilePath] string sourceFilePath = "",[CallerLineNumber] int sourceLineNumber = 0){var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);