.net core Serilog和.NET核心Web API日志文件isn';t创造

.net core Serilog和.NET核心Web API日志文件isn';t创造,.net-core,serilog,.net Core,Serilog,我只是从Serilog开始。 尽管有所有的代码示例/tut,但我在网上发现我无法将其输出到文件(文件甚至没有创建)。我的应用程序是一个Web API(.NET Core 3.1),我正在引用 Serilog.AspNetCore(3.4.0) Serilog.Settings.Configurations (3.1.0) Serilog.Sinks.File (4.1.0) My appsettings.json: { "Serilog": { "Mi

我只是从Serilog开始。 尽管有所有的代码示例/tut,但我在网上发现我无法将其输出到文件(文件甚至没有创建)。我的应用程序是一个Web API(.NET Core 3.1),我正在引用

Serilog.AspNetCore(3.4.0)
Serilog.Settings.Configurations (3.1.0)
Serilog.Sinks.File (4.1.0)
My appsettings.json:

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Warning",
        "System": "Warning"
      },
      "WriteTo": [
        {
          "Name": "File",
          "Args": {
            "path": "C:\\DEV\\Logs\\mylog.txt",
            "rollingInterval": "Day"
          }
        }
      ]
    }
  },
  "AllowedHosts": "*"
}
"Serilog": {
    "Using": [ "Serilog.Sinks.RollingFile" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "RollingFile",
        "Args": {
          "pathFormat": "C:\\Logs\\ScreenPop\\Log-{Date}.txt"
        }
      }
    ]
  },
我的程序.cs

public static void Main(string[] args)
    {
        Serilog.Debugging.SelfLog.Enable(Console.Out);

        //Read Configuration from appSettings
        var config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();
        //Initialize Logger
        Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(config)
            .CreateLogger();
        
        try
        {
            CreateHostBuilder(args).Build().Run();
            Log.Information("Application started!");
        }
        catch (Exception e)
        {
            Log.Fatal(e, "Application failed to start.");
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }
我的控制器

public void Post(SampleRequest request)
{
    Log.Information("Received request {@request}", request);
}

甚至Selflog都没有向VisualStudio输出控制台写入任何内容
Serilog.debuging.Selflog.Enable(console.Out)

尝试启用SelfLog,这将有助于您查明问题所在。这个电话和你的稍有不同

在调用.CreateLogger()后立即将其添加到Program.cs中

更多详情-

我在.Net Core 3.1应用程序中将Serilog日志记录到滚动文件

以下是我的nuget参考资料:

<PackageReference Include="Serilog" Version="2.9.0" />
<PackageReference Include="Serilog.AspNetCore" Version="3.2.0" />
<PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.1-dev-00771" />

我知道问题出在哪里了。我从一些博客中复制了设置,
“WriteTo”
元素实际上嵌套在
“MinimumLevel”
元素中。 正确的设置为:

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Warning",
        "System": "Warning"
        }
      },
      "WriteTo": [
        {
          "Name": "File",
          "Args": {
            "path": "C:\\DEV\\Logs\\mylog-.txt",
            "rollingInterval": "Day"
          }
        }
      ]
  },
  "AllowedHosts": "*"
}

Thx的快速响应。我找不到确切的位置,但我知道在appsettings.json中使用
指令是不必要的。尽管如此,我还是将它(
“Using”:[“Serilog.Sinks.File”]
)与您提供的
SelfLog
行代码一起包括在内,但仍然没有任何内容:(.既没有创建我的日志文件,也没有将任何内容调试到visual studio控制台。我是否在正确的位置查找SelfLog调试消息(Output windowin VS)?@cagi是的,这是正确的位置。这是我发现Serilog的一个缺点,当它不工作时,你没有任何帮助。另一个想法,应用程序是否有对文件夹的写入权限?
{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Warning",
        "System": "Warning"
        }
      },
      "WriteTo": [
        {
          "Name": "File",
          "Args": {
            "path": "C:\\DEV\\Logs\\mylog-.txt",
            "rollingInterval": "Day"
          }
        }
      ]
  },
  "AllowedHosts": "*"
}