.Net Core Worker Service Внедрение входа в класс стандартной библиотеки .NetC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 .Net Core Worker Service Внедрение входа в класс стандартной библиотеки .Net

Сообщение Гость »


Я пытаюсь внедрить свой Serilog Logger в класс библиотеки .Net Standard 2.0 из проекта .NET Core Worker Service. Однако всякий раз, когда создается класс SetManager, он не получает средства ведения журнала. (По умолчанию установлено значение NULL). Поэтому я получаю ошибку «Значение равно нулю» всякий раз, когда пытаюсь использовать регистратор.

Может ли кто-нибудь помочь? Конструктор хостов ниже

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, Services) => { Конфигурация IConfiguration = hostContext.Configuration; ConfigDto configDto = Configuration.GetSection("AppSettings").Get(); Services.AddSingleton(configDto); Services.AddHostedService(); }) .UseSerilog(); } Класс в рабочем проекте, который вызывает SetManager, который является классом в стандартной библиотеке .NET.

public Service (конфигурация ConfigDto, ILogger logger = null) { _logger = регистратор; _logger.LogTrace("Объект службы создан"); пытаться { _logger.LogTrace("Получение конфигурации"); _config = конфигурация; } поймать (Исключение ex) { _logger.LogCritical("Невозможно загрузить конфигурацию. Остановка службы:\n{0}", ex.Message); Останавливаться(); } _setManager = новый SetManager(_config); _setManager.ReadyToProcess += SetManager_ReadyToProcess; } Конструктор SetManager

public SetManager (конфигурация ConfigDto, ILogger logger = null) { _logger = регистратор; _config = конфигурация; _productList = ПолучитьПродукты(); _timer.Интервал = 3000; _timer.Elapsed += Timer_Elapsed; } Пакеты

` Класс Service отлично внедряет регистратор. Это класс SetManager, который не получает средство ведения журнала.

Настройка Serilog Logger в методе Main.
Log.Logger = новая LoggerConfiguration() .MinimumLevel.Verbose() .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) .Enrich.With(новый ThreadIdEnricher()) .Enrich.FromLogContext() .WriteTo.Console(LogEventLevel.Verbose, loggerTemplate, тема: AnsiConsoleTheme.Literate) .WriteTo.File(файл журнала, LogEventLevel.Verbose, loggerTemplate, RollingInterval: RollingInterval.Day, RetainedFileCountLimit: 90) .CreateLogger();
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»