Serilog не регистрируется при публикации ядра ASP.NET

2

Я настроил 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();
    }

Так что локально "Posting Review" записывается как в мой файл, так и в DbSchema.

Тем не менее, когда я публикую на своем сервере, вышеупомянутая запись "Posting Review" также не записывается.

Похоже, что оба они работают, поскольку записи информации добавляются из 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"
      }
    }
  • 0
    пожалуйста, поделитесь DbGlobals.DevDatabase
  • 0
    Есть ли у вас appsetting.json для serilog?
Показать ещё 2 комментария
Теги:
asp.net-core-webapi
asp.net-core-2.1
serilog

1 ответ

2
Лучший ответ

Обновить

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

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

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


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

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

_logger.LogInformation("Posting Review");
  • 0
    звучит многообещающе, я сейчас попробую.
  • 0
    Это сработало, я могу подтвердить, что и LogInformation и LogError работали при публикации. Странно было то, что он работал под локальной версией релиза, и я думал, что LogDebug будет просто частью иерархии журналирования? Вы знаете, почему это не так? (из интереса)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню