Serilog не регистрируется при публикации ядра ASP.NET - PullRequest
0 голосов
/ 10 января 2019

У меня настроен Serilog для записи в таблицу MSSQL и в файл (чтобы попытаться определить, что происходит.) В WebApi с ядром ASP.NET (работает с Core 2.1).

Я добавляю запись в Serilog в мой startup.cs следующим образом;

 public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            var log = new LoggerConfiguration()
                .MinimumLevel.Verbose()
                .WriteTo.MSSqlServer(
                    DbGlobals.DevDatabase, "Logs", schemaName:DbGlobals.SchemaName)
                .WriteTo.File("Logs\\Serilog\\log.txt", rollingInterval: RollingInterval.Day)
                .CreateLogger();

            loggerFactory.AddSerilog(log);

, где DbGlobals.DevDatbase и Dbglobals.SchemaName - это строки, считанные из конфигурации.

ОБНОВЛЕНИЕ Для справки эти значения:

DbGlobals.Schema = "MySchema";
DbGlobals.DevDatabase = "Data Source=xx.xx.xx.xx;Initial Catalog=DevDatabase;Integrated Security=False;Persist Security Info=False;User ID=LOGIN;Password=PASSWORD;MultipleActiveResultSets=true;";

При локальном запуске с IIS Express и в конфигурациях debug и release обе функции ведения журнала работают правильно. Так, например, в моем контроллере;

public class ReviewPublicController : Controller
{
    private readonly IReviewService _service;
    private readonly IMapper _mapper;
    private readonly IMailService _mailService;
    private readonly ILogger _logger;

    public ReviewController(
        IReviewService service, 
        ILogger<ReviewController> logger)
    {
        _service = service;
        _logger = logger;
    }

    [HttpPost]
    [ProducesResponseType(typeof(Review), 201)]
    [Route("")]
    public async Task<IActionResult> Post([FromBody]ReviewPostModel model)
    {
        _logger.LogDebug("Posting Review");

        ...

        return Ok();
    }

Таким образом, локально «Отправка отзыва» записывается как в мой файл, так и в DbSchema.

Однако, когда я публикую на своем сервере, вышеупомянутая запись «Отправка отзыва» также не записывается.

Похоже, что оба работают, поскольку записи информации добавляются из EF, маршрутизации и т. Д., Но не тогда, когда я специально пытаюсь написать запись?

Может кто-нибудь направить меня сюда, в чем проблема может быть, пожалуйста?

Текущие версии nuget:

Serilog 2.7.1
Serilog.AspNetCore 2.1.1
Serilog.Sinks.MSSqlServer 5.1.2
Serilog.Sinks.File 4.0.0

Кроме того, в моем appsettings.json;

есть следующее
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Release": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }

1 Ответ

0 голосов
/ 10 января 2019

обновление

Как в документах:

Уровень по умолчанию - если MinimumLevel не указан, будут обрабатываться события информационного уровня и выше.

Так что, похоже, ваша конфигурация неверна или перезаписана. см .: https://github.com/serilog/serilog/wiki/Configuration-Basics


LogDebug отключен по умолчанию в сборке Release, что, вероятно, является тем, что вы публикуете.

Пожалуйста, попробуйте с

_logger.LogInformation("Posting Review");
...