2012-05-14 9 views
9

Come configurare il registro boost, per scrivere con rotazione e accodamento?Come configurare il registro boost, per scrivere con rotazione e accodamento?

E dopo il riavvio del programma, non cancellare il file di registro.

int init_log() 
{ 
    typedef sinks::synchronous_sink<sinks::text_file_backend> file_sink; 
    boost::shared_ptr<file_sink> sink(new file_sink (
     keywords::file_name = "app.log", // only one files 
     // keywords::open_mode = (std::ios::out | std::ios::app), // is not append 
     keywords::open_mode = (std::ios::out | std::ios::app), // is not rotated 
     keywords::rotation_size = 10 * 1024 
    )); 
} 
+1

non so come fare questo, ma log4cpp fa tutto questo ed è ampiamente utilizzato. http://log4cpp.sourceforge.net/api/classlog4cpp_1_1RollingFileAppender.html –

+0

possibile duplicato di [Boost.Log - come configurare un backend del sink di testo da aggiungere ai file ruotati] (http://stackoverflow.com/questions/8418917/ file boost-log-how-to-configure-a-text-sink-backend-to-append-to-rotated) –

risposta

5

Prova questo fuori (la chiave è l'aggiunta del nome del registro utilizzando alcuni modello e non fissare il suo nome come "app.log") questo permetterà la rotazione flre ei dati verrà aggiunto ad ogni creato file. Per quanto riguarda la compensazione di registro, fino a quando non è stato specificato file_collector personalizzato, il vostro log dovrebbero rimanere intatto :)

typedef sinks::synchronous_sink<sinks::text_file_backend> file_sink; 
boost::shared_ptr<file_sink> sink(new file_sink(
     keywords::file_name  = "app%m%d%Y_%H%M%S_%5N.log", // file name pattern 
     keywords::rotation_size = 10*1024      // rotation size, in characters 
     )); 
+5

I dati di registro devono essere aggiunti allo stesso file di log, per ogni richiamo del programma, fino a quando viene raggiunta la dimensione di rotazione . Con quel codice, ogni esecuzione crea un nuovo file di registro. – ixe013

Problemi correlati