【发布时间】:2019-11-18 09:08:08
【问题描述】:
我正在使用带有 .NET Core 3.0 预览版的新 Worker Service 应用模板,并尝试使用 AddEventLog 方法添加事件日志记录。但是,我无法通过 Windows 中的事件查看器查看我的任何日志。
我有一个非常简单的 Worker 应用程序设置,并在 Program.cs 文件中配置了日志记录,如下所示:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureLogging((context, logging) =>
{
logging.AddEventLog(new EventLogSettings()
{
SourceName = "MyTestSource",
LogName = "MyTestLog"
});
})
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
然后我在Worker.cs 文件中有一些日志记录语句,如下所示:
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
public override async Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation($"Worker started at: {DateTime.Now}");
await base.StartAsync(cancellationToken);
}
public override async Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation($"Worker stopped at: {DateTime.Now}");
await base.StopAsync(cancellationToken);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation( $"Worker running at: {DateTime.Now}");
await Task.Delay(1000, stoppingToken);
}
}
为了设置事件日志,我从提升的 Powershell 提示符运行以下命令:
New-EventLog -LogName MyTestLog -Source MyTestSource
如果我打开事件查看器,我可以看到“应用程序和服务日志”下方列出的“MyTestLog”。
然后,为了将我的 Worker 设置为 Windows 服务,我从提升的命令提示符运行以下命令:
dotnet publish -o publish(发布项目并输出到发布目录)
sc create MyTestService binPath=<path to exe in publish directory>
服务创建成功,我可以在服务查看器应用程序中看到它。从那里,我手动启动服务,然后在事件查看器中查看,没有显示任何日志。
我原以为会有一些日志。但是,事件查看器中的“MyTestLog”部分仍为空。
【问题讨论】:
标签: c# logging .net-core worker