【发布时间】:2021-04-28 19:06:45
【问题描述】:
我创建了一个 C# .net5.0 控制台应用程序,并且在测试期间 Serilog 一直在正常工作,登录到控制台和文件(相同的文件夹;path="log.txt")。但是,当我在我们服务器上的应用程序上运行时,控制台和文件日志接收器都不起作用!我现在假设问题不在于接收器本身,而是 Serilog 没有实际工作。
我已尝试启用自我日志:
Serilog.Debugging.SelfLog.Enable(msg =>
Console.WriteLine(msg)
);
但即使在我的开发环境的调试器中运行,Console.WriteLine(msg) 行也不会被调用!
我的appsettings.json如下:
{
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Information",
"System": "Information"
}
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console",
"outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {NewLine}{Exception}"
}
},
{
"Name": "File",
"Args": {
"path": "log.txt",
"rollingInterval": "Infinite",
"outputTemplate": "{Timestamp:HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
"shared": false
}
}
],
"Enrich": [ "FromLogContext" ]
},
"Database": {
"Server": "(local)",
"Database": "ActivbaseLive"
},
"Email": {
"SmtpHost": "localhost",
"SmtpPort": 25,
"SmtpSecurityOption": "None",
"SmtpUsername": null,
"SmtpPassword": null,
"SmtpSender": "\"Activbase Learning Platform\" <noreply@activbase.net>"
}
}
我尝试过绝对路径(在appsettings.json 中使用双反斜杠)。
我已经尝试预先创建日志文件(例如log.txt 和log200428.txt)并将权限设置为Everyone Full Control,但是这些更改都没有解决问题,他们也没有解释为什么控制台接收器也不写.
这是在启动期间如何配置 Serilog,这是我怀疑问题所在(即使它在开发环境中工作):
return Host.CreateDefaultBuilder()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
})
.UseSerilog((hostContext, loggerConfiguration) =>
{
loggerConfiguration.ReadFrom.Configuration(hostContext.Configuration);
})
.ConfigureAppConfiguration((hostContext, builder) =>
{
builder.AddEnvironmentVariables();
})
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
...
});
}
你知道为什么 Serilog 不能在生产环境中工作吗?
【问题讨论】:
-
在您尝试的基础上,接下来我会做这 4 件事: 1. 在文件夹级别专门为应用程序运行的用户设置权限 2. 启动控制台应用程序管理员模式 3. 检查 windows 事件查看器的应用程序日志 => 运行、CMD、eventvwr.msc。系统方面的错误应该出现在那里 4. 如果某些侵入性防病毒软件正在运行,请检查对 serilog.dll 的访问是否被阻止。
-
现在正在发生非常相似的挫败感,想知道到底该如何解决
-
这个问题有解决方案吗?我已经尝试了所有建议,但仍然没有任何运气可以写出日志文件。
-
@Rushman 自从我发布此查询以来我已经继续前进,但我认为您应该检查您是否有日志文件的绝对路径以及 IIS 用户帐户是否具有读/写权限建议在这里。
标签: serilog serilog-sinks-file