Как создать расширение конфигурации для ILoggingBuilder в ASP .Net Core 2.2? - PullRequest
0 голосов
/ 24 апреля 2019

Я использую Asp .NET Core 2.2 и мне нужно войти в файл.И попытался с ILoggerFactory:

 loggerFactory.AddProvider(new MyOwnFileLogProvider());

Но:

loggerFactory.AddConsole();//This method is obsolete and will be removed in a future version.

Хорошо, отклонить все фабрики и использовать:

WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseConfiguration(config)
                .UseKestrel()
                .ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.AddConsole();
                });

Как я могу создать расширение конфигурации для ILoggingBuilderдля регистрации файлов?

logging.AddFile();

1 Ответ

1 голос
/ 24 апреля 2019

Методы фабрики регистраторов устарели в пользу более нового компоновщика логирования, который полностью облегчает создание контейнера зависимости.Однако создать расширение компоновщика логгера для вашего собственного провайдера логгера нетрудно.

Вам просто нужно добавить ILoggerProvider в коллекцию сервисов:

public static ILoggingBuilder AddConsole(this ILoggingBuilder builder)
{
    builder.Services.AddSingleton<ILoggerProvider, CustomLoggerProvider>();

    return builder;
}

Вместо того, чтобы разрешить вашего провайдерас помощью внедрения зависимости вы также можете зарегистрировать экземпляр напрямую.Существует также встроенный метод расширения AddProvider, который делает именно это.Таким образом, вы также можете использовать это:

public static ILoggingBuilder AddConsole(this ILoggingBuilder builder)
{
    builder.AddProvider(new CustomLoggerProvider>());

    return builder;
}

Это должно сделать использование очень похожим на использование ILoggerFactory.

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