提问人:arbck90 提问时间:10/19/2023 更新时间:11/6/2023 访问量:33
从 .net core 创建的 Windows 微服务使用不会将日志写入路径
Windows microservice created from .net core using does not write logs to path
问:
从 .net core 创建的 Windows 微服务使用不会将日志写入路径
我从 c# .net core 创建了一个 Windows 服务,该服务在 appsettings.json中使用 Serilog.Sinks.Async.File,如下所示
"Serilog": {
"Using": [
"Serilog.Sinks.Async"
],
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": {
"restrictedToMinimumLevel": "Information",
"path": "%PROGRAMDATA%/logs/file.log",
"rollingInterval": "Day",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}
]
}
},
上面的配置只是appsettings.json的一个片段,但它也包括其中设置的其他标准参数。
请告诉我作为本地系统运行的 Windows 服务是否可以将日志写入通过 appsettings.json 配置的 %PROGRAMDATA% 路径。如果在 Program.cs 中将其配置为服务的一部分,则同一日志文件有效
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.Destructure.UsingAttributes()
.WriteTo.Async(a =>
a.File(Environment.ExpandEnvironmentVariables("%PROGRAMDATA%\logs\file.log"))
.WriteTo.Console()
.CreateBootstrapLogger()
答:
0赞
Qiang Fu
11/3/2023
#1
此日志记录有效。
包Serilog.AspNetCore
Microsoft.Extensions.Hosting.WindowsServices
var builder = Host.CreateDefaultBuilder(args);
builder.UseSerilog((hostingContext, services, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration));
builder.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
services.AddWindowsService();
});
var host =builder.Build();
host.Run();
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "%PROGRAMDATA%/Logs/log.txt",
"rollingInterval": "Day",
"restrictedToMinimumLevel": "Information"
}
},
评论