From a9751f84301783eca219219c5bb3691de9985933 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Thu, 3 Oct 2002 21:34:32 +0000 Subject: [PATCH] Iserita syslog --- session.tex | 100 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 94 insertions(+), 6 deletions(-) diff --git a/session.tex b/session.tex index 5d994d3..b2115ac 100644 --- a/session.tex +++ b/session.tex @@ -702,10 +702,10 @@ solo localmente; se si vogliono inviare i messaggi ad un'altro sistema occorre farlo esplicitamente con un socket UDP, o utilizzare le capacità di reinvio del servizio. -La prima funzione definita dall'interfaccia è \func{openlog}; essa in generale -non è necessaria per l'uso del servizio, ma permette di impostare alcuni -valori che controllano gli effetti delle chiamate successive; il suo prototipo -è: +La prima funzione definita dall'interfaccia è \func{openlog}, che apre una +connessione al servizio di \textit{syslog}; essa in generale non è necessaria +per l'uso del servizio, ma permette di impostare alcuni valori che controllano +gli effetti delle chiamate successive; il suo prototipo è: \begin{prototype}{syslog.h}{void openlog(const char *ident, int option, int facility)} @@ -717,8 +717,12 @@ Apre una connessione al sistema di \textit{syslog}. La funzione permette di specificare, tramite \param{ident}, l'identità di chi ha inviato il messaggio (di norma si passa il nome del programma, come specificato da \code{argv[0]}); la stringa verrà preposta all'inizio di ogni -messaggio. Il parametro \param{facility} permette invece di specificare -l'omonimo indice; i valori possibili sono riportati in +messaggio. Si tenga presente che il valore di \param{ident} che si passa alla +funzione è un puntatore, se la stringa cui punta viene cambiata lo sarà pure +nei successivi messaggi, e se viene cancellata i risultati potranno essere +impredicibili, per questo è sempre opportuno usare una stringa costante. Il +parametro \param{facility} permette invece di specificare l'omonimo indice per +la categoria del messaggio; i valori possibili sono riportati in \tabref{tab:sess_syslog_facility}. \begin{table}[htb] @@ -751,6 +755,90 @@ l'omonimo indice; i valori possibili sono riportati in \label{tab:sess_syslog_facility} \end{table} +L'argomento \param{option} serve invece per controllare il comportamento della +funzione \func{openlog} e delle modalità con cui le successive chiamate +scriveranno i messaggi, esso viene specificato come maschera binaria composta +con un OR aritmetico di una qualunque delle costanti riportate in +\tabref{tab:sess_openlog_option}. + +\begin{table}[htb] +\centering +\begin{tabular}[c]{|l|p{8cm}|} +\hline +\textbf{Valore}& \textbf{Significato}\\ +\hline +\hline +\macro{LOG\_CONS} & Scrive sulla console quando. \\ +\macro{LOG\_NDELAY} & Sostituisce \macro{LOG\_AUTH}.\\ +\macro{LOG\_NOWAIT} & Messaggi dei demoni di gestione dei comandi + programmati (\cmd{cron} e \cmd{at}).\\ +\macro{LOG\_ODELAY} & .\\ +\macro{LOG\_PERROR} & Stampa anche su \file{stderr}.\\ +\macro{LOG\_PID} & Inserisce nei messaggi il \acr{pid} del processo + chiamante. \\ +\hline +\end{tabular} +\caption{Valori possibili per l'argomento \param{option} di \func{openlog}.} +\label{tab:sess_openlog_option} +\end{table} + +La funzione che si usa per generare un messaggio è \func{syslog}, dato che +l'uso di \func{openlog} è ozionale, sarà quest'ultima a provvede a chiamare la +prima qualora ciò non sia stato fatto (nel qual caso il valore di +\param{ident} è nullo). Il suo prototipo è: +\begin{prototype}{syslog.h} +{void syslog(int priority, const char *format, ...)} + +Genera un messaggio di priorità \param{priority}. + +\bodydesc{La funzione non restituisce nulla.} +\end{prototype} + +Il comportamento della funzione è analogo quello di \func{printf}, e il valore +dell'argomento \param{format} è identico a quello descritto nella pagina di +manuale di quest'ultima (per i valori principali si può vedere la trattazione +sommaria che se ne è fatto in \secref{sec:file_formatted_io}); l'unica +differenza è che la sequenza \cmd{\%m} viene rimpiazzata dalla stringa +restituita da \code{strerror(errno)}. Gli argomenti seguenti i primi due +devono essere forniti secondo quanto richiesto da \func{format}. + +L'argomento \param{priority} permette invece di impostare l'importanza del +messaggio; il valore deve essere impostato i valori possibili sono riportati +in \secref{tab:sess_syslog_priority}. + +\begin{table}[htb] +\centering +\begin{tabular}[c]{|l|p{8cm}|} +\hline +\textbf{Valore}& \textbf{Significato}\\ +\hline +\hline +\macro{LOG\_EMERG} & Il sistema è inutilizzabile. \\ +\macro{LOG\_ALERT} & C'è una emergenza che richiede intervento immediato.\\ +\macro{LOG\_CRIT} & Si è in una condizione critica.\\ +\macro{LOG\_ERR} & Si è in una condizione di errore.\\ +\macro{LOG\_WARNING} & Messaggio di avvertimento.\\ +\macro{LOG\_NOTICE} & Notizia significativa relativa al comportamento.\\ +\macro{LOG\_INFO} & Messaggio informativo. \\ +\macro{LOG\_DEBUG} & Messaggio di debug.\\ +\hline +\end{tabular} +\caption{Valori possibili per l'argomento \param{priority} di \func{syslog}.} +\label{tab:sess_syslog_priority} +\end{table} + +Dato che in molti programmi + +Il sistema del \textit{syslog} usa la priorità del messaggio per classificare +gli stessi, è inoltre possibile restringere l'emissione dei messaggi +attraverso l'uso della funzione \func{setlogmask}, il cui prototipo è: +\begin{prototype}{syslog.h} +{int setlogmask(int mask)} + +Imposta la maschera dei log al valore specificato. + +\bodydesc{La funzione restituisce il precedente valore.} +\end{prototype} -- 2.30.2