Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
public static void Log(this ILogger logger, LogLevel logLevel, Exception exception, string message, params object[] args) public static void Log(this ILogger logger, LogLevel logLevel, EventId eventId, Exception exception, string message, params object[] args)}Яркая характеристика ASP.NET Core связана с расширяемостью конвейера в целом и с ведением журнала в частности. Стандартное средство ведения журнала может быть заменено другой инфраструктурой ведения журнала при условии, что новая инфраструктура способна интегрироваться с установленным шаблоном ведения журнала. Serilog — одна из инфраструктур, которая хорошо интегрируется с ASP.NET Core. В последующих разделах демонстрируется создание инфраструктуры ведения журнала, основанной на Serilog, и конфигурирование приложений ASP.NET Core для использования нового кода регистрации в журнале.
Интерфейс IAppLogging
Начните с добавления в проект
AutoLot.ServicesLoggingIAppLogging.csIAppLogging<T>IAppLogging.csusing System;using System.Runtime.CompilerServices;namespace AutoLot.Services.Logging{ public interface IAppLogging<T> { void LogAppError(Exception exception, string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0); void LogAppError(string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0); void LogAppCritical(Exception exception, string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0); void LogAppCritical(string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0); void LogAppDebug(string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0); void LogAppTrace(string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0); void LogAppInformation(string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0); void LogAppWarning(string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0); }}Атрибуты
CallerMemberNameCallerFilePathCallerLineNumberLogAppWarning()DoWork()MyClassFile.cs_appLogger.LogAppWarning("A warning");преобразуется в следующий эквивалент:
_appLogger.LogAppWarning ("A warning","DoWork","c:/myfilepath/MyClassFile.cs",36);Если методу при вызове передаются значения, тогда переданные значения используются вместо значений из атрибутов.
Класс AppLogging
Класс
AppLoggingIAppLoggingAppLoggingusingusing System;using System.Collections.Generic;using System.Runtime.CompilerServices;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.Logging;using Serilog.Context;Сделайте класс открытым и реализующим интерфейс
IAppLogging<T>ILogger<T>IConfigurationILogger<T>IConfiguration