Accesso al file di testo o al database?

15

Quando devo usare il database per la registrazione e quando i file di testo?
Vedo che i server web e i framework web (che la tua app utilizza internamente) di solito (sempre?) Registrano richieste ed errori nei file di testo per impostazione predefinita. Ma vedo che le persone che sviluppano la loro app intorno a quei server e framework a volte si collegano al database (anche il DB principale dell'app, non un altro esterno).
Inoltre forse c'è una differenza tra log di debug e log di controllo - Ho letto questa classificazione da qualche parte su questo sito.

    
posta Nakilon 23.03.2016 - 12:10
fonte

4 risposte

12

In termini molto generali, l'accesso a un file di testo è molto più rapido che accedere a un database. Questo è l'aspetto principale della registrazione che devi prendere in considerazione.

Il motivo per cui si accede a un DB è più probabile perché si desidera interrogare i risultati: la ricerca di particolari informazioni di registro è più semplice in un DB, in particolare se si registrano informazioni contestuali che possono essere utilizzate per raggruppare le voci di registro. Di solito è anche più facile accedere a un DB centrale rispetto a un file di registro su un server che può essere protetto e non accessibile.

L'ideale sarebbe quello di accedere localmente a un file e quindi migrare questi dati su un DB per l'ispezione, se necessario in seguito.

Ora l'auditing è una bestia diversa del tutto. Mentre è analogo al concetto di registrazione, di solito è necessario che l'audit sia mantenuto per un lungo periodo (diversamente dai file di registro usati per il debug o la traccia che possono essere cancellati per un capriccio). Gli audit sono lì per mostrare informazioni importanti. Si registrano molte meno informazioni di controllo e meno frequentemente rispetto alla normale registrazione, quindi le prestazioni non sono un problema. È per questo motivo che si vedono i vantaggi di scrivere queste informazioni di controllo su un DB centrale.

    
risposta data 23.03.2016 - 12:30
fonte
6

Non esiste un approccio adatto a tutte le dimensioni e per la resilienza, a volte si desidera utilizzare più approcci. Prendendo il tuo esempio, potresti voler stoccare i registri di debug in un file e archiviare i registri di controllo in un DB.

Application breadcrumb

Pro: facile da implementare e visibile all'utente subito

Contro: le informazioni persistono solo quando l'applicazione è attiva

File di testo

Pro: facile da implementare

Contro: È necessario assicurarsi che il blocco dei file non si verifichi. Cosa fare quando lo spazio su disco si esaurisce sull'unità di registro?

Registro eventi

Pro: facile da implementare

Contro: il registro eventi potrebbe diventare pieno se non impostato correttamente o i log vecchi potrebbero andare persi a causa del criterio di conservazione / eliminazione.

database

Pro: facile da implementare

Contro: più traffico DB. Come registrare una perdita di DB o altri problemi di DB?

Messaggi (MQ)

Professionisti: fai fuoco e dimentica

Contro: un altro livello per sbagliare. Richiede la configurazione

    
risposta data 23.03.2016 - 12:33
fonte
2

I registri di controllo devono garantire la piena tracciabilità delle operazioni su un periodo più lungo a fini di controllo, con l'obiettivo di giustificare pienamente il contenuto del database.

In alcuni casi (ad esempio applicazioni finanziarie) questi registri potrebbero dover garantire la conformità con requisiti legali come la conservazione (in alcuni paesi per 10 anni) o l'inalterabilità. Poiché questi registri devono giustificare il contenuto del db a livello di applicazione, è prassi comune memorizzarli nel db, dove l'accesso può essere controllato per evitare alterazioni non autorizzate.

Altri log , come i log di monitoraggio oi log di sicurezza, spesso devono far fronte a vincoli di prestazioni e volume. Questi sono generalmente scritti su un file perché è più veloce da scrivere (nessun overhead di gestione delle transazioni) più semplice da archiviare offline e più facile da integrare con il monitoraggio esterno SIEM strumenti.

Si noti che, mentre questo tipo di registri può essere utilizzato per dimostrare l'affidabilità dei registri di audit (ad esempio, nessun accesso non autorizzato), in genere hanno vincoli di conservazione più brevi (ad esempio tra 6 mesi e 2 anni per scopi di applicazione della legge registri di telecomunicazione) in caso di qualsiasi vincolo.

    
risposta data 23.03.2016 - 13:18
fonte
1

Uno dei tanti motivi per utilizzare db per la registrazione di debug è Quando non si ha accesso all'applicazione o al server Web per visualizzare il visualizzatore di eventi oi file di testo

I registri di controllo sono diversi dai registri di debug nel contesto dell'applicazione Web, come in alcune applicazioni che potrebbero essere necessarie per mostrarli all'utente finale in modo che possano andare nel database per un facile recupero.

Puoi usare DB Tools anche per filtrare e visualizzare facilmente.

    
risposta data 23.03.2016 - 12:28
fonte

Leggi altre domande sui tag