Jac*_*sey 5 c# logging worker .net-core
我正在使用带有.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>();
});
Run Code Online (Sandbox Code Playgroud)
然后,我在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);
}
}
Run Code Online (Sandbox Code Playgroud)
要设置事件日志,我从提升的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”部分在事件查看器中保持为空。
这样我就可以找到这里报告的问题。
从本质上讲,它可以归结为最新的.NET Core 3.0预览版中的更改,其中默认情况下现在以警告级别过滤事件日志。因此,您看不到任何信息日志。
解决方法是仅将appsettings.json文件编辑为如下所示:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
},
"EventLog": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将覆盖默认设置,并允许再次查看信息日志。
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |