Добавьте метод к существующим Microsoft.Extensions.Logging.LoggerExtensions в Core 2.1 - PullRequest
0 голосов
/ 08 января 2019

Я хочу добавить метод к существующим LoggerExtensions в Core 2.1, который должен будет использовать IConfiguration для чтения некоторых настроек из файла appsettings.json.

Я создал частичный статический класс с моим новым методом внутри него, но это не позволяет мне получить доступ к IConfiguration, поскольку это статический класс.

Как я могу создать этот новый метод, который является частью LoggerExtensions, который может читать из IConfiguration?

В приведенном ниже примере я не могу получить доступ к _configuration.GetSection, поскольку я не могу ввести его

public static partial class LoggerExtensions
    {
        public static void EmailError(this ILogger logger, Exception exception, string message)
        {

            using (var smtpClient = new SmtpClient(config.GetSection("Host").Value))
            {
                 // ......
            }
        }
    }

1 Ответ

0 голосов
/ 08 января 2019

Вы должны добавить экземпляр IConfiguration в качестве параметра к методу расширения. Например:

public static void LogErrorAndEmail(this ILogger logger, IConfiguration configuration, Exception exception, string message, params object[] args)
{
    // ...
}

Лучшим вариантом может быть создание пользовательской реализации регистратора, которая отправляет почту при определенных условиях. Вы можете начать с реализации интерфейса ILogger и реализовать свою почтовую логику в методе Log. Вставьте экземпляр IConfiguration в конструктор. Во-вторых, создайте реализацию ILoggerFactory, чтобы создать новый экземпляр вашего пользовательского регистратора, также введите параметр IConfigruation в конструктор и передайте его вашему регистратору. Наконец, вызовите services.AddSingleton<ILoggerProvider, YourCustomLoggerProvider>() в классе запуска, чтобы зарегистрировать свой собственный регистратор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...