Logging Serilog:无法使rollingfile正常工作

Logging Serilog:无法使rollingfile正常工作,logging,asp.net-core,asp.net-core-mvc,serilog,Logging,Asp.net Core,Asp.net Core Mvc,Serilog,场景:ASP.NETMVC6Web应用程序 以下是在project.json中导入的包: "Serilog": "2.3.0", "Serilog.Extensions.Logging": "1.3.1", "Serilog.Sinks.RollingFile": "3.2.0", "Serilog.Settings.Configuration": "2.2.0" 这里是appsettings配置 "Serilog": { "Using": [ "Serilog.Sinks.Roll

场景:ASP.NETMVC6Web应用程序

以下是在
project.json中导入的包:

"Serilog": "2.3.0",
"Serilog.Extensions.Logging": "1.3.1",
"Serilog.Sinks.RollingFile": "3.2.0",
"Serilog.Settings.Configuration":  "2.2.0"
这里是
appsettings
配置

"Serilog": {
    "Using": [ "Serilog.Sinks.RollingFile" ],
    "MinimumLevel": {
        "Default": "Verbose",
        "Override": {
            "Microsoft": "Warning",
            "Microsoft.AspNetCore.Identity": "Debug",
            "System": "Warning"
        }
    },
    "WriteTo": [
        {
            "Name": "RollingFile",
            "Args": {
                "path": "logger-{Date}.log",
                "outputTemplate": "{Timestamp:o} [{Level:u3}] ({Application}/{MachineName}/{ThreadId}) {Message}{NewLine}{Exception}",
                "fileSizeLimitBytes": 16384
            }
        }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Properties": {
        "Application": "Sample"
    }
},
这里是
启动
构造函数

var builder = new ConfigurationBuilder()
                  .SetBasePath( _environment.ContentRootPath )
                  .AddJsonFile( "appsettings.json", optional: true, reloadOnChange: true )
                  .AddJsonFile( $"appsettings.{_environment.EnvironmentName}.json", optional: true );

Configuration = builder.Build();

var logger = new LoggerConfiguration()
                 .ReadFrom.Configuration( Configuration )
                 .CreateLogger();
在配置方法中,我有

loggerFactory.AddConsole();
loggerFactory.AddSerilog();
文件应该写在哪里?是否存在与写入权限相关的问题

编辑

遵循@Sanket建议,但仍然不起作用。我也切换到红隼,看看它是否在控制台上工作,但仍然没有运气。我看到的是:

Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:5000/
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
      Executing action method MyCompany.MyProject.Host.Controllers.HomeController.Index MyCompany.MyProject.Host) with arguments (
(null)) - ModelState is Valid
info: Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ViewResultExecutor[1]
      Executing ViewResult, running view at path /Views/Home/Index.cshtml.
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
      Executed action MyCompany.MyProject.Host.Controllers.HomeController.Index (MyCompany.MyProject.Host) in 2614.9118ms
这对我来说是非常奇怪的,因为在我刚刚拥有的索引操作的主控制器中

public IActionResult Index() {
    _logger.LogDebug( "Index in HomeController called!" );
    return View();
}

在启动时,您可以像这样指定滚动文件的路径-

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "Serilog-{Date}.txt"))
    .CreateLogger();

更新:

在appsettings.json中,将path参数更改为pathFormat

"path": "logger-{Date}.log",

文件将在项目位置创建

参考此


更新2:

在启动构造函数中,按如下方式更改serilog logger-

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "Serilog-{Date}.txt"))
    .CreateLogger();


是 啊我读过了。我想使用基于配置的记录器。在我看来,似乎一切都是正确的,但没有看到日志file@Lorenzo:检查我的更新答案。将
path
更改为
pathformat
。按照您的建议进行操作,但运气不佳。请看我的编辑谢谢@Sanket!没问题@Lorenzo:)
var logger = new LoggerConfiguration()
                 .ReadFrom.Configuration( Configuration )
                 .CreateLogger();
Log.Logger = new LoggerConfiguration()
                 .ReadFrom.Configuration(Configuration)
                 .CreateLogger();