无法从Windows服务中托管的Asp.net核心网站启动多个Serilog接收器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法从Windows服务中托管的Asp.net核心网站启动多个Serilog接收器相关的知识,希望对你有一定的参考价值。
我的服务运行正常,它正在写入事件日志serilog接收器也很好。我的问题是,serilog拒绝写入appsettings.json提供的任何其他接收器我的Appsettings.json片段
"Serilog": {
"Using": [ "Serilog.Sinks.EventLog" ],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"System": "Information",
"Microsoft": "Information"
}
},
"WriteTo": [
{
"Name": "EventLog",
"Args": {
"source": "FMS",
"manageEventSource": true
}
},
{
"Name": "RollingFile",
"Args": {
"pathFormat": "D:\\publish\\log-{Date}.txt",
"rollingInterval": "Day",
"fileSizeLimitBytes": 1024,
"retainedFileCountLimit": 60,
"shared": true,
"buffered": true
}
}
],
"Enrich": [ "WithProcessId", "WithProcessName", "WithExceptionDetails" ]
}
我正在我的CustomWebHostService中设置我的记录器
public IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Data.GetDirectoryPath())//gets directory
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
public CustomWebHostService(IWebHost host) : base(host)
{
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.CreateLogger();
}
我试过创建一个控制台接收器和一个普通的旧文件接收器,除了事件日志接收器之外没有任何工作。我已经更新到所有必需的nuget包的最新稳定版本。
编辑:我已经尝试过,服务可以写入该位置。
答案
问题是这一行
"Using": [ "Serilog.Sinks.EventLog" ],
如果您使用此语法,则需要指定所有接收器。它可以被完全移除并且水槽可以工作(或者您可以指定它,这样您就可以使用一条线轻松关闭水槽)
以上是关于无法从Windows服务中托管的Asp.net核心网站启动多个Serilog接收器的主要内容,如果未能解决你的问题,请参考以下文章
SMTP 服务器无法从托管 c#asp.net 发送电子邮件
无法从 docker windows 容器中的 asp.net 核心应用程序连接到主机数据库
在.net核心应用程序中自托管HTTP(s)端点而不使用asp.net?