首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Serilog记录nothing

Serilog记录nothing
EN

Stack Overflow用户
提问于 2020-11-03 00:03:21
回答 1查看 32关注 0票数 0

大家好,我有Mcv Api Project,我尝试用Serilog登录,但是当我尝试调用我的api并在文件/控制台中记录一些文本时,它是空的,我不能理解出了什么问题

我的program.cs

代码语言:javascript
复制
        public static void Main(string[] args)
        {

            var seriliogConfiguration = new ConfigurationBuilder()
                .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "Configs"))
                .AddJsonFile("settings.json")
                .Build();
            var logger = new LoggerConfiguration()
                .ReadFrom.Configuration(seriliogConfiguration)
                .CreateLogger();
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseSerilog()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

我的设置json

代码语言:javascript
复制
{
  "Serilog": {
    "Using": [],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "File",
        "Args": {
          "path": "D:\\Logs\\logs.txt",
          "outputTemplate": "{Timestamp:G} {Message}{NewLine:1}{Exception:1}"
        }
      }
    ]
  }
}

当我尝试在文件和控制台中执行日志记录时,

代码语言:javascript
复制
        private readonly ILogger<WeatherForecastController> _logger;
        public WeatherForecastController(ILogger<WeatherForecastController> logger) =>  _logger = logger;
       
        public IEnumerable<WeatherForecast> Get() =>_logger.LogInformation("You requested Get()");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-03 12:06:43

因为Serilog没有注入到Asp.net Core容器中。控制器中调用的接口不是Serilog方法。因此,日志将不会写入文件。您需要修改Program.cs

代码语言:javascript
复制
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
                var seriliogConfiguration = new ConfigurationBuilder()
                   .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "Configs"))
                   .AddJsonFile("settings.json")
                   .Build();
                webBuilder.UseSerilog((hostingContext, loggerConfiguration) =>
                {
                    loggerConfiguration.ReadFrom.Configuration(seriliogConfiguration);

                });
            });
}

我在此操作中添加了一个日志。

代码语言:javascript
复制
    [HttpGet]
    public IActionResult Get()
    {
        _logger.LogInformation("This info is in index");

        return Ok();
    }

在控制台中。

在此日志文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64649047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档