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

View File

@@ -11,6 +11,11 @@ namespace AutoBidder.Models
/// </summary>
public class AuctionInfo
{
/// <summary>
/// Numero massimo di righe di log da mantenere per ogni asta
/// </summary>
private const int MAX_LOG_LINES = 500;
public string AuctionId { get; set; } = "";
public string Name { get; set; } = ""; // Opzionale, può essere lasciato vuoto
public string OriginalUrl { get; set; } = ""; // URL completo dell'asta (per referer)
@@ -71,17 +76,21 @@ namespace AutoBidder.Models
public bool IsAttackInProgress { get; set; } = false;
/// <summary>
/// Aggiunge una voce al log dell'asta
/// Aggiunge una voce al log dell'asta con limite automatico di righe
/// </summary>
public void AddLog(string message)
/// <param name="message">Messaggio da aggiungere al log</param>
/// <param name="maxLines">Numero massimo di righe da mantenere (default: 500)</param>
public void AddLog(string message, int maxLines = 500)
{
var entry = $"{DateTime.Now:HH:mm:ss.fff} - {message}";
AuctionLog.Add(entry);
// Mantieni solo ultimi 500 log
if (AuctionLog.Count > 500)
// Mantieni solo gli ultimi maxLines log
if (AuctionLog.Count > maxLines)
{
AuctionLog.RemoveAt(0);
// Rimuovi i log più vecchi per mantenere la dimensione sotto controllo
int excessCount = AuctionLog.Count - maxLines;
AuctionLog.RemoveRange(0, excessCount);
}
}