2011-02-01 6 views
8

Ho cercato per circa 2 settimane per ottenere una libreria di registrazione con cui lavorare. Ho provato Log4cxx, Log4cpp, log4cplus e boost.log. Il problema non è che nessuno di questi lavori per me, è che non riesco a capire come farli funzionare a tutti. Mi piacerebbe molto usare log4cxx visto che sto lavorando con log4j/logback al lavoro, ma non sono stato in grado di ottenere nessuna delle librerie basate su log4j da compilare. Sono stato in grado di creare e utilizzare la libreria boost, ma boost.log mi dà tutti i tipi di errori linker, non importa quello che cerco. Se qualcuno potesse indirizzarmi a una guida passo passo per far funzionare una di queste librerie, apprezzerei molto. Inoltre, sto usando eclipse come IDE se questo è importante.Impostazione libreria di registrazione C++

+1

Quale sistema operativo utilizzate? Inoltre, assicurati di compilare prima le librerie e quindi di includere i file di intestazione nel tuo progetto (l'implementazione verrà compilata nelle librerie ** una volta ** in modo da non dover ricompilare l'enorme libreria più volte) – RageD

+0

Sto usando Windows 7. Non sono sicuro di cosa intendi per compilare e poi prendere i file di intestazione. Scusate, sono abbastanza nuovo nell'usare le librerie di terze parti. Per potenziare almeno aggiungo la directory root di boost come un percorso di inclusione e quindi uso una direttiva di inclusione per ogni file di cui ho bisogno. – Shenlong55

risposta

0

Suggerirei . Ci vuole del tempo per creare tutto quando si scarica per la prima volta - digitare make build test e andare a pranzo - e devi selezionare i flussi di output (Pantheios li chiama "back-end") al momento del collegamento, ma per la codifica è molto semplice, ad es.

std::string name; 
int age; 

pantheios::log_DEBUG("name=", name, " age=", pantheios::integer(age)); 

È stato progettato da zero per velocità - l'età non sarà convertito in una stringa a meno che il livello di "DEBUG" è acceso - e robustezza - che è il motivo per cui non si può passare direttamente i tipi fondamentali e utilizzare "inseritori" (ad es. pantheios::integer). Vedi this recent blog post di autore di Pantheios per ulteriori informazioni.

1

Hai mai funzionato? Log4cxx funziona sicuramente su Win7. Forse potresti pubblicare alcuni dei tuoi errori di compilazione. Solo supposando, forse non hai configurato il tuo progetto Eclipse per il collegamento con una lib statica log4cxx.

1

Boost.Log funziona abbastanza bene per me (Linux e Windows). Non è una libreria di sola intestazione, c'è una parte compilata a cui devi collegarti. Vedere le istruzioni here.

Dipende anche da altri, non-header, librerie Boost:

La biblioteca di registrazione utilizza diverse altre librerie Boost che hanno bisogno edificio troppo. Si tratta di Boost.Filesystem, Boost.System, Boost.DateTime, Boost.Thread e Boost.Regex. Fare riferimento alla relativa documentazione per istruzioni dettagliate sulla procedura di costruzione.

A seconda della piattaforma, potrebbero esserci versioni pre-costruite delle librerie Boost. Altrimenti, costruirlo tu stesso è semplice se segui le istruzioni. Se rimani bloccato aggiorna la tua domanda con dove esattamente sei rimasto bloccato e cosa stai vedendo.

0

Sono riuscito a far funzionare log4cxx, questo è stato fatto in Visual Studio 2013 in esecuzione su Windows 7 OS.

Questo che segue è quello che ho fatto, passo dopo passo:

Scarica il log4cxx pacchetto ZIP estrarne il contenuto, http://logging.apache.org/log4cxx/download.html

Scarica aprile e apr-util pacchetti di avviamento postale, http://apr.apache.org/download.cgi

Poi

  1. estrarre manualmente questo zip apr-1.2.11-win32-src.zip (la cartella estratta deve essere denominato 'Aprile', se non è rinominare manualmente esso)
  2. estrarre manualmente questo zip apr-util-1.2.10-win32-src.zip (la cartella estratta deve essere denominato 'apr-util', se non è manualmente rinominarlo)
  3. aprire un prompt dei comandi ed eseguire i seguenti: cd apache-log4cxx-0.10.0 configure (questo eseguirà configure.bat)

Sarà necessario disabilitare l'uso del supporto ICONV e LDAP APR. Per fare così, noi aggiungerà i seguenti file manualmente:

  1. Aperto apr-util \ include \ apu.hw. Trova la riga che inizia con "#define APU_HAVE_APR_ICONV". Cambia il valore a 0 e salva.
  2. Aprire apr-util \ include \ apr_ldap.hw. Trova la riga che inizia con "#define APR_HAS_LDAP" Cambia il valore a 0 e salva.

abbiamo bisogno di costruire il log4cxx.dll, di farlo convertire * dsw a * .cxproj.

  1. Avviare Visual Studio 2013 e aprire log4cxx.dsw.
  2. VS chiederà se ti piace convertire tutto. Basta fare clic su Sì. Potrebbero esserci alcuni avvisi nel rapporto di migrazione, ma nulla che impedisca l'apertura della soluzione.

> I progetti xml, apr e apr-util devono essere compilati correttamente.

Se si tenta di compilare il progetto log4cxx, la maggior parte di probabilmente fallirà con centinaia di errori. Ciò è dovuto a un bug in VC++ che può essere risolto.

  1. Spostare tutte le macro al di fuori (sopra) la classe di cui si trovano. LOG4CXX_LIST_DEF macro viene utilizzato per definire le classi. Tutte le macro segnalate nell'errore C2252 dovranno uscire da qualsiasi classe. Questo può anche includere definizioni di spostamento utilizzate nella macro.
  2. Avanti, cambia tutto LoggingEvent :: keyset a Keyset (questo non è più è annidato in una classe genitore)

> A seguito di questo, il progetto log4cxx dovrebbe ora essere compilabile con successo sulla vostra macchina.