|
||||
|
|
#1 (permalink) |
|
Esperto della community ![]() ![]()
2,353 Messaggi
![]() ![]() ![]() |
Loggare messaggi di errore
Spieghiamo come loggare tramite syslogd i messaggi di errore del nostro programma in un sistema GNU/Linux
Innanzi tutto, diciamo che il file header che ci serve e' <syslog.h>. In questo header, troveremo tre funzioni: openlog, syslog e closelog. Sufficienti spiegazioni (senza esempi) si trovano nella manpage: codice:
man 3 syslog codice:
#include <syslog.h>
int main(void) {
openlog("fake kernel", LOG_PERROR, LOG_KERN);
syslog(LOG_CRIT, "Questo e' un falso errore del falso kernel");
closelog();
}
- il primo e' un const char* e contiene la stringa che sara' messa nel messaggio di errore... ad esempio in una riga di syslog come questa: codice:
Dec 27 10:49:57 spacelab kernel: CPU: Intel Pentium III (Coppermine) stepping 0a - il secondo parametro e' un intero, di cui nell'header sono definite varie costanti. Queste sono: LOG_CONS che specifica di scrivere sulla console gli eventuali errori riscontrati con il logger di sistema; LOG_NDELAY che forza l'apertura della connessione al logger prima ancora che il primo messaggio sia mandato; LOG_NOWAIT e' un parametro che non ci interessa, in quanto le libc di Linux non creano processi-figlio); LOG_ODELAY e' usata di default e indica che la connessione con il logger sia stabilita nonappena il primo messaggio debba essere mandato; LOG_PERROR indica che il messaggio di errore dev'essere stampato anche sulla stderr; LOG_PID specifica se includere o meno il PID del processo nel messaggio di errore; - il terzo parametro e' anch'esso un intero che specifica il tipo di errore che invieremo. Nel nostro caso abbiamo usato LOG_KERN per indicare che e' un log del Kernel.. altri potrebbero essere LOG_FTP, LOG_LPR, LOG_MAIL o, semplicemente LOG_SYSLOG (per una lista completa si veda la manpage di cui sopra); Dopo la openlog, abbiamo usato la funzione syslog, che invia il messaggio del log. Questa si comporta esattamente come la printf(), ad eccezione del fatto che ammette un primo parametro aggiuntivo: un intero che specifica il livello di gravita' del messaggio: LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG. In ultimo abbiamo usato la funzione (opzionale) closelog che non ha bisogno di alcun parametro e chiude la connessione con il logger di sistema. Ultima modifica di Master85 : 03-11-2005 a 16:08. |
|
|
|
![]() |
| Strumenti della discussione | |
| Modalità di visualizzazione | |
|
|
Discussioni simili
|
||||
| Discussione | Ha iniziato questa discussione | Forum | Risposte | Ultimo messaggio |
| [VBA] Gestione degli errori | dragone bianco | VBA Tutorials & How-To | 1 | 18-09-2008 17:38 |
| PHP 4.x: Realizzare un Guestbook | Skull86 | PHP Tutorials & How-To | 0 | 21-11-2005 18:45 |
| Errore "Server, ASP 0177 (0x800401F3)" | raffaelke | ASP 3.0, ASP .Net | 1 | 30-09-2005 14:05 |
| [Win32] Problema con UpdateWindow | lucagalbu | C/C++ | 17 | 20-06-2005 00:45 |
Tutti gli orari sono GMT +2. Attualmente sono le 09:50.








Modalità lineare


