Serilog ASP .Net Core 在 MacOS 中不将日志写入文件但在 Windows 中工作
Serilog ASP .Net Core not writing logs to file in MacOS but works in Windows
我已经在我的 asp .net core 3.1 项目中配置了 serilog。它在 windows 中工作正常,但是当我 运行 在 Mac 中工作时,我没有得到任何日志文件 created.So 我通过写入控制台进行了检查,它工作正常但是仅在 mac 中写入文件也不起作用,在 windows 中都工作正常。
Startup.cs
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>();
});
并且在我使用的任何一个 class 中,我正在创建一个通用的记录器实例,并且使用方式如下
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");
}
我记得用 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,
我已经在我的 asp .net core 3.1 项目中配置了 serilog。它在 windows 中工作正常,但是当我 运行 在 Mac 中工作时,我没有得到任何日志文件 created.So 我通过写入控制台进行了检查,它工作正常但是仅在 mac 中写入文件也不起作用,在 windows 中都工作正常。
Startup.cs
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>();
});
并且在我使用的任何一个 class 中,我正在创建一个通用的记录器实例,并且使用方式如下
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");
}
我记得用 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,