Files
BotPages/BotPages.Core/Middleware/LoggingMiddleware.cs

32 lines
1.1 KiB
C#

using BotPages.Core.Abstractions;
using BotPages.Core.Logging;
namespace BotPages.Core.Middleware;
/// <summary>
/// Middleware для логирования всех входящих апдейтов.
/// </summary>
public sealed class LoggingMiddleware : IPageMiddleware
{
private readonly ILogger _logger;
/// <inheritdoc/>
public LoggingMiddleware(ILogger logger) => _logger = logger;
/// <inheritdoc/>
public async Task InvokeAsync(PageContext ctx, Func<Task> next, CancellationToken ct)
{
// Логируем базовую информацию
_logger.Log(LogLevel.Info, $"Update from {ctx.Update.AdapterId} | Chat: {ctx.Update.Chat.Id} | User: {ctx.Update.User.Id}");
// Логируем текст, кнопки, файлы
if (ctx.Update.Text is not null)
_logger.Log(LogLevel.Info, $"Text: {ctx.Update.Text}");
if (ctx.Update.Files.Count > 0)
_logger.Log(LogLevel.Info, $"Files: {ctx.Update.Files.Count}");
// Передаём управление дальше по конвейеру
await next();
}
}