Serilog 不创建日志文件

use*_*839 0 serilog .net-core serilog-exceptions

我们正在使用下面的一段 serilog 代码,它将事件写入控制台和文件,文件和控制台日志记录在我的机器上工作正常,但在其他开发人员机器上控制台日志记录工作,但文件日志记录不起作用,这增加了奇怪之处不过,“logs”文件夹已创建。是否需要进行任何额外的设置?

   public static void SetupLogger()
        {
            //var outputTemplate =   "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}";
            var outputTemplate = "[{Level:u3}] {Message:lj}{NewLine}{Exception}";

            // Logger  
            //var outputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u4}] | {Message:l}{NewLine}{Exception}";
            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Verbose()
                .WriteTo.Console(outputTemplate: outputTemplate, theme:SystemConsoleTheme.Literate,restrictedToMinimumLevel:LogEventLevel.Information)
                .WriteTo.File($"logs/log-{DateTime.Now:yyyy-MM-dd_HH:mm:ss.fff}.log")              
                .CreateLogger();

        }
Run Code Online (Sandbox Code Playgroud)

Cai*_*ete 5

解决 Serilog 任何问题时的第一步是打开SelfLog并查看是否捕获任何异常。错误消息可能会告诉您问题所在。

Serilog.Debugging.SelfLog.Enable(s => Console.WriteLine($"Internal Error with Serilog: {s}"));
Run Code Online (Sandbox Code Playgroud)

或者,如果您没有控制台窗口,您也可以使用记事本窗口来检查SelfLog


不管怎样,它不工作的机器是运行 Windows 的吗?我之所以这样问,是因为查看您的代码,我不希望它在 Windows 上工作,因为您使用:名称中的(冒号)保存文件,这不是 Windows 中文件名的有效字符。

Windows 上文件的无效字符