У меня настроен 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"
}
}