C# Serilog ASP.Net Core在MacOS中不将日志写入文件,但在Windows中工作
我已经在asp.NETCore3.1项目中配置了serilog。它在windows中工作正常,但当我在Mac上运行它时,我没有创建任何日志文件。因此,我通过向控制台写入检查,它工作正常,但仅在Mac中写入文件不工作,在windows中两者都工作正常 Startup.csC# Serilog ASP.Net Core在MacOS中不将日志写入文件,但在Windows中工作,c#,asp.net,asp.net-core,serilog,C#,Asp.net,Asp.net Core,Serilog,我已经在asp.NETCore3.1项目中配置了serilog。它在windows中工作正常,但当我在Mac上运行它时,我没有创建任何日志文件。因此,我通过向控制台写入检查,它工作正常,但仅在Mac中写入文件不工作,在windows中两者都工作正常 Startup.cs public Startup(IConfiguration configuration) { Configuration = configuration; Log
public Startup(IConfiguration configuration)
{
Configuration = configuration;
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File(new CompactJsonFormatter(), "Logs\\log.json", rollingInterval: RollingInterval.Minute,shared:true,
restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger();
}
Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.useserlog()
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
});
在我使用的任何一个类中,我都在创建一个logger的通用实例,并且使用如下
public AuthService(ILogger<AuthService> logger)
{
_logger = logger;
}
and in
some function(){
_logger.LogInformation("Got Access Token, Now returning!");
_logger.LogError("Oops! got an error");
_logger.LogWarning("Warning from service");
}
public AuthService(ILogger记录器)
{
_记录器=记录器;
}
而且
某些函数(){
_logger.LogInformation(“获得访问令牌,现在返回!”);
_logger.LogError(“哎呀!有个错误”);
_logger.LogWarning(“服务警告”);
}
我记得在Mac OS上工作了很长时间,它不喜欢双斜杠\。试试这样的怎么样
string logFolder = "Logs";
var logPath = Path.Combine(logFolder, "log.json");
.WriteTo.File(new CompactJsonFormatter(), logPath, rollingInterval: RollingInterval.Minute,shared:true,
....
或
令人惊讶的是,它成功了!你说得对!我也认为它应该与文件系统路径有关。谢谢
.WriteTo.File(new CompactJsonFormatter(), @"Logs\log.json", rollingInterval: RollingInterval.Minute,shared:true,