È necessario memorizzare tracce di stack nel database?

0

Il sistema attuale su cui sto lavorando passa attraverso una serie di documenti e amp; esegue una logica utilizzando i metadati del documento. Se i metadati di un documento sono fishy..it lancia un'eccezione. Il sistema registra l'eccezione, fallisce il lavoro e amp; lascia che lo sviluppatore risolva il problema osservando i log prima di proseguire.

Voglio improvvisare questo sistema rendendo il sistema tollerante ai guasti come ho visto che generalmente il lavoro fallisce a causa di pochi documenti. Il sistema continua anche se viene sollevata un'eccezione. Le informazioni sull'eccezione verrebbero archiviate nella tabella del database insieme alle informazioni del documento. Queste informazioni verrebbero inviate allo sviluppatore che può quindi lavorare per risolverlo senza aspettare il cliente. Il cliente può successivamente elaborare quei documenti non riusciti separatamente.

La mia domanda è come memorizzare le informazioni sulle eccezioni nella tabella. L'eccezione sarebbe già stata registrata nel file di registro. Un'idea che stavo pensando era quella di memorizzare il timestamp dell'eccezione in modo che lo sviluppatore possa in seguito trovare il timestamp nel file di log e comprendere l'eccezione. Ma questo ha una possibilità che i file di log possano essere cancellati.

Ha senso memorizzare l'intera traccia dello stack nel database?

    
posta user2812714 21.11.2013 - 01:25
fonte

2 risposte

3

Per rispondere alla tua domanda, devi rispondere a questa domanda:
La traccia dello stack fornisce utili informazioni diagnostiche aggiuntive che l'eccezione stessa non ha?

Se sì, quindi sicuro, andare avanti e memorizzare le informazioni di traccia dello stack.

Se no, non perdere tempo.

Per quanto riguarda come archiviare la traccia dello stack, è possibile prendere in considerazione tutti i tipi di metodi. Ad esempio, è piuttosto semplice creare una routine che converta le informazioni dello stack in stringhe e quindi memorizzi quelle stringhe. Allo stesso modo, puoi inserire qualsiasi argomento aggiuntivo nello stack e inserirli nelle stringhe che stai creando. Tutto dipende da quali informazioni sono necessarie.

Più in generale, è necessario registrare le informazioni che consentono di diagnosticare e risolvere i problemi. Se memorizzarlo in un file di registro o in un database è in qualche modo irrilevante. Il punto è che stai cercando di registrare le informazioni sull'errore quando si verifica l'errore.

Se sei preoccupato che le informazioni sull'errore non persistano con qualsiasi meccanismo tu scelga (ovvero il tuo file di registro sia stato cancellato), allora devi trovare un meccanismo di persistenza più robusto per le informazioni sull'errore. Ma il problema che è un problema separato dal fatto che tu debba o meno registrare XYZ informazioni su un errore.

    
risposta data 21.11.2013 - 02:00
fonte
1

Sì. Lo stoccaggio è economico. Probabilmente non sarà possibile accedere a molto (verificare) o visualizzare un numero elevato di record (verificare anche).

Una possibile preoccupazione potrebbe essere la sicurezza, se l'accesso al DB non è protetto come l'accesso al log: qualcuno può ottenere un accesso indesiderato alle tracce e da loro ottenere informazioni che li aiutano a compromettere qualcos'altro?

    
risposta data 21.11.2013 - 02:00
fonte

Leggi altre domande sui tag