@page "/Settings/Logs" @using LANCommander.Server.Settings @using LANCommander.Server.Settings.Enums @using LANCommander.Server.Settings.Models @using LANCommander.Server.UI.Pages.Settings.Logs.Components @using Microsoft.Extensions.Options @inject IOptions Settings @inject SettingsProvider SettingsProvider @inject IMessageService MessageService @inject NavigationManager NavigationManager @inject ILogger Logger @if (FileProvider != null) { } @foreach (var provider in Providers) { @if (Providers.Any(p => p.Type == LoggingProviderType.SignalR && p.Enabled)) {
} @code { List Providers = new(); LoggingProvider? FileProvider => Providers.FirstOrDefault(p => p.Type == LoggingProviderType.File && p.Enabled); protected override void OnInitialized() { Providers = Settings.Value.Server.Logs.Providers.ToList(); } void Save() { try { Settings.Value.Server.Logs.Providers = Providers; SettingsProvider.Update(s => { s.Server.Logs = Settings.Value.Server.Logs; }); MessageService.Success("Settings saved!"); } catch (Exception ex) { MessageService.Error("An unknown error occurred."); Logger.LogError(ex, "An unknown error occurred."); } } void AddProvider() { Providers.Add(new LoggingProvider() { Type = LoggingProviderType.Console, Enabled = true, Name = "Console" }); } void RemoveProvider(LoggingProvider provider) { Providers.Remove(provider); } void DownloadLog() { if (FileProvider == null) return; var logFileName = $"log-{DateTime.Now:yyyy-MM-dd}.txt"; var logFilePath = Path.Combine(FileProvider.ConnectionString, logFileName); if (!File.Exists(logFilePath)) { MessageService.Warning("No log file exists for today."); return; } NavigationManager.NavigateTo($"/api/Logs/Download/{logFileName}", true); } }