логи
This commit is contained in:
+31
-10
@@ -1,3 +1,4 @@
|
||||
using System.Diagnostics;
|
||||
using Hangfire;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@@ -83,15 +84,34 @@ public sealed class CreateNextListPartitionJob(
|
||||
var nextNumber = maxNumber + 1;
|
||||
|
||||
logger.LogInformation(
|
||||
"Создаю партицию №{Number} для типа заявок {RequestTypeId} по структуре {SourceListId}.",
|
||||
nextNumber, requestTypeId, requestType.ListId);
|
||||
"Создаю партицию №{Number} для типа заявок {RequestTypeId} ({RequestTypeName}) " +
|
||||
"по структуре {SourceListId}.",
|
||||
nextNumber, requestTypeId, requestType.Name, requestType.ListId);
|
||||
|
||||
// Партиция всегда создаётся на том же сайте, что и текущая (см. комментарий
|
||||
// на RequestListPartition о недопустимости разъезда серии по сайтам) — сайт
|
||||
// берём из RequestType, а не откуда-либо ещё, так что расхождение
|
||||
// структурно невозможно.
|
||||
var created = await provisioner.CreateNextListPairAsync(
|
||||
requestType.SiteUrl, requestType.ListId, nextNumber, cancellationToken);
|
||||
var stopwatch = Stopwatch.StartNew();
|
||||
ProvisionedList created;
|
||||
try
|
||||
{
|
||||
// Партиция всегда создаётся на том же сайте, что и текущая (см.
|
||||
// комментарий на RequestListPartition о недопустимости разъезда серии
|
||||
// по сайтам) — сайт берём из RequestType, а не откуда-либо ещё, так что
|
||||
// расхождение структурно невозможно.
|
||||
created = await provisioner.CreateNextListPairAsync(
|
||||
requestType.SiteUrl, requestType.ListId, nextNumber, cancellationToken);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Логируем с контекстом (номер партиции, тип заявок) здесь, а не
|
||||
// полагаемся только на то, что исключение долетит до лога Hangfire:
|
||||
// там оно будет без этих подробностей, вперемешку с логами других задач.
|
||||
// Дальше даём ему пойти в Hangfire как обычно — так сработает
|
||||
// AutomaticRetry(Attempts = 3).
|
||||
logger.LogError(
|
||||
ex,
|
||||
"Провижининг партиции №{Number} для типа заявок {RequestTypeId} не удался за {ElapsedMs} мс.",
|
||||
nextNumber, requestTypeId, stopwatch.ElapsedMilliseconds);
|
||||
throw;
|
||||
}
|
||||
|
||||
// Реестр и переключение записи — одной транзакцией: иначе можно остаться
|
||||
// с записанной в реестр партицией, в которую никто не пишет, или наоборот.
|
||||
@@ -112,8 +132,9 @@ public sealed class CreateNextListPartitionJob(
|
||||
await transaction.CommitAsync(cancellationToken);
|
||||
|
||||
logger.LogInformation(
|
||||
"Партиция №{Number} ({ListId}) создана, запись по типу заявок {RequestTypeId} переключена на неё.",
|
||||
nextNumber, created.ListId, requestTypeId);
|
||||
"Партиция №{Number} ({ListId}) создана за {ElapsedMs} мс, запись по типу заявок " +
|
||||
"{RequestTypeId} переключена на неё.",
|
||||
nextNumber, created.ListId, stopwatch.ElapsedMilliseconds, requestTypeId);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user