Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Serilog ASP.Net Core在MacOS中不将日志写入文件,但在Windows中工作_C#_Asp.net_Asp.net Core_Serilog - Fatal编程技术网

C# Serilog ASP.Net Core在MacOS中不将日志写入文件,但在Windows中工作

C# 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

我已经在asp.NETCore3.1项目中配置了serilog。它在windows中工作正常,但当我在Mac上运行它时,我没有创建任何日志文件。因此,我通过向控制台写入检查,它工作正常,但仅在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>();
                });
公共静态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,