feat: add periodic server stats reporting and logging

- Introduced ServerStatsReport and ServerStatsCollector for tracking server activity.
- Implemented ServerStatsReportService to generate and persist stats reports periodically.
- Added configuration options for stats reporting in appsettings and .env.example.
- Enhanced logging in ChannelsController and ModerationController to include stats-related actions.
- Updated database context and migrations to support new ServerStatsReport entity.
- Adjusted logging levels in IrcGatewayService and ChatService for better performance.
This commit is contained in:
HueByte
2026-07-17 22:14:55 +02:00
parent 0c2e8eae87
commit 7525f8b1d8
15 changed files with 964 additions and 11 deletions
+21
View File
@@ -0,0 +1,21 @@
namespace EchoHub.Server.Config;
/// <summary>
/// Periodic server-stats report settings, bound from the "Stats" config section (env override:
/// <c>Stats__Enabled</c> etc.). When enabled, a background job periodically snapshots server
/// activity, logs it as pretty-printed JSON, and persists it to the database.
/// </summary>
public sealed class StatsOptions
{
/// <summary>Master switch for the periodic stats report job.</summary>
public bool Enabled { get; set; } = true;
/// <summary>How often a report is generated, in hours. Default: every 6 hours.</summary>
public double IntervalHours { get; set; } = 6;
/// <summary>
/// How long persisted reports are kept before being pruned, in days. Set to 0 to keep
/// reports indefinitely. Default: 90 days.
/// </summary>
public int RetentionDays { get; set; } = 90;
}