Aggiunti limiti configurabili per i log

- Introdotta una nuova sezione "Limiti Log" nell'interfaccia utente per configurare:
  - Numero massimo di righe di log per asta (default: 500).
  - Numero massimo di righe di log globale (default: 1000).
- Aggiunte proprietà in `SettingsManager` per salvare/caricare i limiti.
- Applicati i limiti al log globale e ai log delle aste:
  - Log globale: rimozione automatica dei paragrafi più vecchi.
  - Log per asta: ottimizzato `AddLog` con `RemoveRange` per migliorare le performance.
- Documentazione dettagliata in `FEATURE_CONFIGURABLE_LOG_LIMITS.md` e `FEATURE_LOG_MAX_LINES.md`.
- Migliorata la gestione della memoria, riducendo il rischio di rallentamenti o crash.
- Test e checklist definiti per verificare il corretto funzionamento.
This commit is contained in:
2025-11-21 09:41:08 +01:00
parent 4bfcf147b4
commit 570c2e53d6
8 changed files with 926 additions and 20 deletions
@@ -19,14 +19,18 @@ namespace AutoBidder
{
var settings = SettingsManager.Load();
// Popola i controlli con i valori salvati
// Popola i controlli con i valori salvati - Aste
DefaultBidBeforeDeadlineMs.Text = settings.DefaultBidBeforeDeadlineMs.ToString();
DefaultCheckAuctionOpen.IsChecked = settings.DefaultCheckAuctionOpenBeforeBid;
DefaultMinPrice.Text = settings.DefaultMinPrice.ToString("F2", System.Globalization.CultureInfo.InvariantCulture);
DefaultMaxPrice.Text = settings.DefaultMaxPrice.ToString("F2", System.Globalization.CultureInfo.InvariantCulture);
DefaultMaxClicks.Text = settings.DefaultMaxClicks.ToString();
Log($"[OK] Impostazioni predefinite caricate: Anticipo={settings.DefaultBidBeforeDeadlineMs}ms", LogLevel.Info);
// Popola i controlli con i valori salvati - Limiti Log
Settings.MaxLogLinesPerAuction.Text = settings.MaxLogLinesPerAuction.ToString();
Settings.MaxGlobalLogLines.Text = settings.MaxGlobalLogLines.ToString();
Log($"[OK] Impostazioni predefinite caricate: Anticipo={settings.DefaultBidBeforeDeadlineMs}ms, Log Asta={settings.MaxLogLinesPerAuction}, Log Globale={settings.MaxGlobalLogLines}", LogLevel.Info);
}
catch (Exception ex)
{
@@ -38,6 +42,8 @@ namespace AutoBidder
DefaultMinPrice.Text = "0.00";
DefaultMaxPrice.Text = "0.00";
DefaultMaxClicks.Text = "0";
Settings.MaxLogLinesPerAuction.Text = "500";
Settings.MaxGlobalLogLines.Text = "1000";
}
}
@@ -204,8 +210,19 @@ namespace AutoBidder
settings.DefaultMaxClicks = maxClicks;
}
// ? NUOVO: Salva limiti log
if (int.TryParse(Settings.MaxLogLinesPerAuction.Text, out var maxLogPerAuction) && maxLogPerAuction > 0)
{
settings.MaxLogLinesPerAuction = maxLogPerAuction;
}
if (int.TryParse(Settings.MaxGlobalLogLines.Text, out var maxGlobalLog) && maxGlobalLog > 0)
{
settings.MaxGlobalLogLines = maxGlobalLog;
}
Utilities.SettingsManager.Save(settings);
Log($"[OK] Impostazioni predefinite salvate: Anticipo={bidMs}ms, MinPrice=€{settings.DefaultMinPrice:F2}, MaxPrice=€{settings.DefaultMaxPrice:F2}, MaxClicks={maxClicks}", LogLevel.Success);
Log($"[OK] Impostazioni salvate: Anticipo={bidMs}ms, MinPrice=€{settings.DefaultMinPrice:F2}, MaxPrice=€{settings.DefaultMaxPrice:F2}, MaxClicks={maxClicks}, LogAsta={settings.MaxLogLinesPerAuction}, LogGlobale={settings.MaxGlobalLogLines}", LogLevel.Success);
// Rimosso MessageBox - verrà mostrato dal chiamante
}
else