NLog для windows-сервиса

Создаю windows-сервис (.NET 5) и хочу использовать NLog. Все работает, но почему-то в лог еще пишутся такие записи:

2021-10-20 18:22:44.8017|INFO|Microsoft.Hosting.Lifetime|Application started. Hosting environment: Production; Content root path: C:\Users<...>\source\repos<path>\bin\Release\net5.0\publish\

2021-10-20 18:27:35.8279|INFO|Microsoft.Hosting.Lifetime|Application is shutting down...

Может быть используется как встроенный логгер Microsoft, так и NLog? Как можно использовать только один?

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseWindowsService()
            .ConfigureServices((hostContext, services) =>
            {
                services.AddHostedService<Worker>();
            })
            .ConfigureLogging((hostContext, logBuilder) =>
            {
                logBuilder.AddNLog(new NLogLoggingConfiguration(hostContext.Configuration.GetSection("NLog")));
            });            
}

Конфигурация NLog в appsettings.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "NLog": {
    "throwConfigExceptions": true,
    "targets": {
      "async": true,
      "logfileMain": {
        "type": "File",
        "fileName": "${basedir}/logs/nlog-${shortdate}.log"
      },
      "logfileError": {
        "type": "File",
        "fileName": "${basedir}/logs/nlog-error-${shortdate}.log"
      },
      "logconsole": {
        "type": "Console"
      }
    },
    "rules": [
      {
        "logger": "*",
        "maxlevel": "Warn",
        "writeTo": "logfileMain"
      },
      {
        "logger": "*",
        "minlevel": "Error",
        "writeTo": "logfileError"
      },
      {
        "logger": "Microsoft.*",
        "maxlevel": "Info",
        "final": true
      },
      {
        "logger": "*",
        "minLevel": "Trace",
        "writeTo": "logconsole"
      }      
    ]
  }
}

UPDATE Добавил в сервис дополнительную библиотеку и в лог теперь пишется еще информация от нее (см. далее). Как можно настроить NLog, чтобы выводилось в лог только то, что выводится через _logger.Info("Текст"), _logger.Debug("Текст") и т.д.

2021-10-21 12:39:53.9300|INFO|Quartz.Core.SchedulerSignalerImpl|Initialized Scheduler Signaller of type: Quartz.Core.SchedulerSignalerImpl 2021-10-21 12:39:53.9300|INFO|Quartz.Core.QuartzScheduler|Quartz Scheduler created 2021-10-21 12:39:53.9300|INFO|Quartz.Core.QuartzScheduler|JobFactory set to: Quartz.Simpl.MicrosoftDependencyInjectionJobFactory 2021-10-21 12:39:53.9300|INFO|Quartz.Simpl.RAMJobStore|RAMJobStore initialized. 2021-10-21 12:39:53.9300|INFO|Quartz.Core.QuartzScheduler|Scheduler meta-data: Quartz Scheduler (v3.3.3.0) 'QuartzScheduler' with instanceId 'NON_CLUSTERED' Scheduler class: 'Quartz.Core.QuartzScheduler' - running locally. NOT STARTED.
Currently in standby mode. Number of jobs executed: 0 Using thread pool 'Quartz.Simpl.DefaultThreadPool' - with 10 threads. Using job-store 'Quartz.Simpl.RAMJobStore' - which does not support persistence. and is not clustered.

2021-10-21 12:39:53.9300|INFO|Quartz.Impl.StdSchedulerFactory|Quartz scheduler 'QuartzScheduler' initialized 2021-10-21 12:39:53.9300|INFO|Quartz.Impl.StdSchedulerFactory|Quartz scheduler version: 3.3.3.0 2021-10-21 12:39:53.9648|INFO|Quartz.ContainerConfigurationProcessor|Adding 1 jobs, 1 triggers. 2021-10-21 12:39:53.9648|INFO|Quartz.ContainerConfigurationProcessor|Adding job: DEFAULT.HelloWorldJob 2021-10-21 12:39:53.9648|DEBUG|Quartz.ContainerConfigurationProcessor|Scheduling job: DEFAULT.HelloWorldJob with trigger: DEFAULT.HelloWorldJob-trigger 2021-10-21 12:39:53.9943|DEBUG|Quartz.ContainerConfigurationProcessor|Rescheduling job: DEFAULT.HelloWorldJob with updated trigger: DEFAULT.HelloWorldJob-trigger 2021-10-21 12:39:54.0082|INFO|Quartz.Core.QuartzScheduler|Scheduler QuartzScheduler_$_NON_CLUSTERED started.


Ответы (1 шт):

Автор решения: Sheridan

Укажите для "logger": "Microsoft.*" куда логи писать (writeTo). Скорее всего оно их пишет без указания в первый объявленный таргет. Возможно, вам нужен null таргет.

→ Ссылка