windows - 使用 sc.exe 安装服务后 Serilog 不写入文件
问题描述
我为 windows 开发了一个 net core 3.1 服务,该服务工作正常,但无法写入日志文件。在调试期间 Serilog 会正确写入文件,但是一旦使用 sc 安装,它什么也不会写入。
程序.cs
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.UseSerilog((hostingContext, loggerConfig) =>
loggerConfig.ReadFrom.Configuration(hostingContext.Configuration)) // custom log event
.ConfigureServices((hostContext, services) =>
{
IConfiguration configuration = hostContext.Configuration; //prendi la configurazione
ServiceInfo siOption = configuration.GetSection("ServiceInfo").Get<ServiceInfo>();
services.AddSingleton(siOption);
services.AddHostedService<Worker>();
});
}
appsetngs.json
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.RollingFile" ],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"WriteTo": [
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "(@Level = 'Error' or @Level = 'Fatal' or @Level = 'Warning')"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Logs/ex_.log",
"outputTemplate": "{Timestamp} [{Level:u3}] {Message}{NewLine}{Exception}",
//"outputTemplate": "{Timestamp:o} [{Level:u3}] ({SourceContext}) {Message}{NewLine}{Exception}",
"rollingInterval": "Day",
"retainedFileCountLimit": 7
}
}
]
}
}
}
],
"Enrich": [
"FromLogContext",
"WithMachineName"
],
"Properties": {
"Application": "ORAMS-II Service Status Telegram"
}
}
}
我不知道可能是什么问题,安装在linux机器上可以正确写入文件
解决方案
推荐阅读
- javascript - 如何在反应中将从firestore获取的文档传递到本地状态
- css - 自定义检查器 CSS 复制到样式表未在刷新时应用
- java - 用于 kotlin 集合的 Guice Typeliteral(例如 kotlin.collections.Iterable)搜索 java.lang.Iterable
- javascript - 有没有办法访问 nodeList 中项目的 value 属性?
- javascript - 我有一个包含 8 个下划线的输入字段,用于 8 位发票编号。如何使输入的数字替换下划线?
- google-sheets - 总结枢轴作为谷歌表格中的线差
- c# - 如何设置给定字符串的排列长度?
- sql - 如果一个日期位于具有多个日期范围的第二个表中的另外两个日期之间,如何逐条检查记录?
- regex - 如何使用 grep 命令获取连续有六个或更多辅音的单词列表?
- java - Draggable Floating View X 和 Y 坐标在视频录制时手指不动突然改变