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