Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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不记录信息日志_C#_Asp.net Core_Asp.net Core 2.1_Serilog - Fatal编程技术网

C# Serilog不记录信息日志

C# Serilog不记录信息日志,c#,asp.net-core,asp.net-core-2.1,serilog,C#,Asp.net Core,Asp.net Core 2.1,Serilog,在.NET Core 2.1项目中,我安装了Serilog,但由于某些原因,它不会记录信息事件。不过,它会记录错误事件 在我的应用程序设置中,我有: "Serilog": { "MinimumLevel": { "Default": "Information", "Override": { "Microsoft": "Fatal", "System": "Fatal"

在.NET Core 2.1项目中,我安装了
Serilog
,但由于某些原因,它不会记录信息事件。不过,它会记录错误事件

在我的应用程序设置中,我有:

    "Serilog": {
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Fatal",
            "System": "Fatal"
          }
        },
        "WriteTo": [
          {
            "Name": "File",
            "Args": {
              "restrictedToMinimumLevel": "Information",
              "path": "D:\\Web\\098_VDSNet4\\Logs\\API.AdminPortal\\.txt",
              "rollingInterval": "Day"
            }
          }
        ]
      }
在我的Startup.cs中,我有:

                Log.Logger = new LoggerConfiguration()
                    .MinimumLevel.Verbose()
                    .ReadFrom.Configuration(Configuration)
                    .CreateLogger();

                services.AddLogging(logging =>
                    logging.AddSerilog(dispose: true)
                );
在代码中,我有:

            public IActionResult Post(Address address)
            {
                string functionName = "AddressController:Post";

                try
                {
                    logger.LogInformation($"{functionName}");

                    // TOOD Additional Address validation
                    addressRepository.Add(address);
                    addressRepository.Save();

                    return Ok(address);
                }
                catch(Exception ex)
                {
                    logger.LogError(ex, $"{functionName}: There was an error creating the address");
                    return BadRequest();
                }

            }
logger.LogInformation
(我也尝试了
logger.LogDebug
,但也不起作用)不输出任何内容。但是
logger.LogError
会记录正确的错误


我曾尝试将默认级别更改为Verbose,以查看这是否会使其生效,但我似乎无法将低于Error的任何内容输出到日志文件

通过构造函数将日志注入控制器,以便使用它

using Serilog;

public class MyController : Controller
{
    private readonly ILogger _log;

    public MyController(ILogger log)
    {            
        _log = log;
    }

    public IActionResult Post(Address address)
    {
        //Make sure you are using the variable you set up in this controller
        _log.Information**("Hello World!");
    }
}

您必须将
ILogger
接口注入
HomeController
构造函数

    private readonly Microsoft.Extensions.Logging.ILogger _log;

    public HomeController(ILogger<HomeController> logger)
    {
        _log = logger;
    }
在Program.cs中添加
useserlog

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog();
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.useserlog();
结果:


确保使用在构造函数中分配的控制器中创建的变量。不要使用Logger.LogInformation。使用日志信息。正在注入的记录器就是正在配置的记录器。Logger.LogInformation使用的是Microsoft Logger,而不是您设置的serlilog。Serilog应该是.Information而不是.LogInformation。

是的,在controller-ctor中我有ILogger-Logger,您是否有第二个
.json
文件,例如
appSettings.Development.json
appSettings.Production.json
,这覆盖了最低级别?另外,我看到您正在使用
AddSerilog()
-这已被
useserlog()
取代,避免了Serilog和默认记录器实现之间的尴尬交互;所有的细节都在:-HTHAs我在上面评论了问题是没有让日志工作。问题在于如何让信息级日志正常工作。会记录错误,但不会记录信息。json中的覆盖将阻止记录大量信息。还尝试将默认级别设置为debug。我尝试将该级别设置为debug和verbose,但只有错误会写入日志文件。当我键入logger时。在VisualStudio2019中,我没有获取信息的选项;intellisense为我提供了登录信息、LogDebug等以及日志。(这是.NET Core而不是.NET Framework)这没有使用Serilog:private readonly Microsoft.Extensions.Logging.ILogger\u log;它从程序类记录为ok。但在我的控制器中,它不是日志记录
    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog();