32 lines
1.1 KiB
C#
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.Adapter.Id} | 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();
|
|
}
|
|
} |