Использование нескольких Microsoft.Расширение.Ведение журнала ILoggers в Prism Xamarin.Формы

#xamarin.forms #prism #ilogger

#xamarin.forms #prism #илоггер

Вопрос:

У меня есть приложение xamarin.forms, использующее Prism. Однако мне нужно добавить несколько microsoft.extensions.регистрация илоггеров в нем. В стандартной настройке microsoft.extensions.dependencyinjection для ведения журнала я обычно выполняю

 serviceCollection.AddLogging(builder =>
                        {
                                builder.AddDebug();
                                builder.AddConsole();

                                builder.AddApplicationInsights(someKey);
                        });
  

Как бы я это сделал с помощью Prism? Смогу ли я по-прежнему получать типизированный илоггер? например

public ThingieService(ILogger<ThingieService> logger)

Ответ №1:

Есть классный маленький плагин, Prism.Microsoft.DependencyInjection.Extensions который я считаю полезным для этого.

В вашем RegisterTypes методе вы можете регистрировать службы, используя Microsoft.Extensions.DependencyInjection версию IServiceCollection . Вы можете добавить поддержку Microsoft.Extensions.Logging ILogger здесь . Например:

 public partial class App : PrismApplication
{
    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterServices(s =>
        {
            s.AddLogging(logging =>
            {
                logging.AddSimpleConsole();
            });
        });
    }
}
  

Это также работает для других IServiceCollection расширений, таких как AddHttpClient() или ConfigureOptions() .

Комментарии:

1. с какой версией prism он работает?

2. Это работает с Prism. Unity v8.0.0.1909 и Prism. Майкрософт. DependencyInjection. Расширения версии 8.0.62. Я не вижу никаких причин, по которым это не будет работать с формами Xamarin.