gpt4 book ai didi

c# - 如何为.NET Core 3.0 Worker Service设置事件日志

转载 作者:行者123 更新时间:2023-12-02 00:01:15 25 4
gpt4 key购买 nike

我正在使用 .NET Core 3.0 Preview 的新 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”部分仍为空。

最佳答案

所以我能够找到报告的问题 here .

本质上,它可以归结为最新 .NET Core 3.0 预览版中的一项更改,其中事件日志现在默认按警告级别进行过滤。因此,您看不到任何信息日志。

修复方法是简单地编辑 appsettings.json 文件,使其如下所示:

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
},
"EventLog": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
}

这会覆盖默认设置并允许再次查看信息日志。

关于c# - 如何为.NET Core 3.0 Worker Service设置事件日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56941898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com