首页 > 解决方案 > 来自 ASP.net Core API 控制器的 Serilog

问题描述

我正在尝试将 serilog 添加到我的 api(asp net core)中,但我无法按照我的意愿进行操作。我有 2 个示例: 1) 这个示例可以按我的意愿工作,我只在“.txt”文件中写入我需要的内容,但我无法从控制器中让它工作

//Program.cs
public static void Main(string[] args)
{
    var logger = new LoggerConfiguration()
        .ReadFrom.Configuration(new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build())
        .CreateLogger();

    logger.Information("Hello, world!");

    CreateWebHostBuilder(args).Build().Run();
}

//输出

2018-07-02 18:17:18.210 -03:00 [INF] Hello, world!

2)这个例子在控制器上工作,但每次我想在“.txt”中写入时,它都会写入 VisualStudio 控制台的所有输出。

//Program.cs
public static void Main(string[] args)
{
    Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(new ConfigurationBuilder()
        .AddJsonFile("appsettings.json")
        .Build())
    .CreateLogger();

    CreateWebHostBuilder(args).Build().Run();
}

//Startup.cs
loggerFactory.AddSerilog();

//Controller
private readonly ILogger<ValuesController> _logger;

public ValuesController(ILogger<ValuesController> logger)
{
    _logger = logger;
}

[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
    _logger.LogInformation("Test");
    return new[] { "value1", "value2" };
}

标签: asp.net-coreasp.net-core-2.0serilog

解决方案


如果检查输出.txt,会有日志吗?我建议您按照以下步骤修改您的项目。

  1. 注释掉loggerFactory.AddSerilog();指向Serilog的内容
  2. 运行install-package Serilog.Sinks.File用于将日志写入文件。

推荐阅读