NOMBRE¶
closelog, openlog, syslog - envían mensajes al registrador del sistema
SINOPSIS¶
#include <syslog.h>
void openlog(const char *ident, int option, int
facility);
void syslog(int priority, const char *format,
...);
void closelog(void);
#include <stdarg.h>
void vsyslog(int priority, const char *format,
va_list ap);
DESCRIPCIÓN¶
closelog() cierra el descriptor que se esté usando para escribir
en el registrador del sistema. El empleo de
closelog() es opcional.
openlog() abre, para un programa, una conexión con el registrador
del sistema. La cadena de caracteres a la que apunte
ident se adjunta
con cada mensaje, y su valor es normalmente el nombre del programa. El
argumento
option especifica banderas que controlan la operación
de
openlog() y las llamadas posteriores a
syslog(). El argumento
facility establece un valor por defecto que se utiliza si no se
especifica ninguno en llamadas posteriores a
syslog(). Los valores de
option y
facility se dan abajo. El uso de
openlog() es
opcional;
syslog() la llamaría automáticamente si fuera
necesario, en cuyo caso
ident tomaría el valor NULL.
syslog() genera un mensaje en el registro, que será distribuido
por
syslogd(8). El argumento
priority se construye con la
operación lógica OR de
facility y de
level ,
(explicados abajo). Los restantes argumentos son un formato,
format,
como en
printf(3), y cualesquiera argumentos requeridos por
format, salvo que la secuencia de dos caracteres %m será
reemplazada por la cadena con el mensaje de error
strerror(
errno). Un carácter final de nueva línea
será añadido cuando sea necesario.
La función
vsyslog() hace la misma tarea que
syslog() con
la diferencia de que acepta un conjunto de argumentos que han sido obtenidos
usando las macros de
stdarg(3) para listas de argumentos variables.
PARÁMETROS¶
Esta sección enumera los parámetros empleados para poner los
valores de
option,
facility, y
priority.
option¶
El argumento
option de
openlog() es el resultado de la
combinación con el operador de bits O inclusivo de cualquiera de estos
valoes:
- LOG_CONS
- Escribe directamente en la consola del sistema si hay un error mientras se
está enviando algo al registrador del sistema.
- LOG_NDELAY
- Abre la conexión inmediatamente (normalmente, la conexión se
abre cuando se registra el primer mensaje).
- LOG_NOWAIT
- No espera a los procesos hijo que pueden haber sido creados mientras se
registraba el mensaje. (La biblioteca C de GNU no crea un proceso hijo,
así que esta opción no tiene efecto en Linux.)
- LOG_ODELAY
- La opuesta de LOG_NDELAY; la apertura de la conexión se
retrasa hasta que se invoca a syslog(). (Esta es la opción
por defecto, y no necesita ser especificada.)
- LOG_PERROR
- (No presente en SUSv3.) Imprime también en stderr.
- LOG_PID
- Incluye el PID con cada mensaje.
facility¶
El argumento
facility se emplea para especificar qué tipo de
programa está registrando el mensaje. Esto permite que en el fichero de
configuración se especifique que mensajes de diferentes programas se
manejen de forma distinta.
- LOG_AUTH
- mensajes de seguridad o autorización (DESAPROBADO; emplee en su
lugar LOG_AUTHPRIV)
- LOG_AUTHPRIV
- mensajes de seguridad o autorización (privado)
- LOG_CRON
- el demonio del reloj (cron y at)
- LOG_DAEMON
- demonios del sistema con valor de `facility' separado
- LOG_FTP
- demonio de ftp
- LOG_KERN
- mensajes del núcleo
- LOG_LOCAL0 a LOG_LOCAL7
- reservados para uso local
- LOG_LPR
- subsistema de impresora de línea (de impresión)
- LOG_MAIL
- subsistema de correo
- LOG_NEWS
- subsistema de tablón de anuncios USENET News
- LOG_SYSLOG
- mensajes generados internamente por syslogd
- LOG_USER (predeterminado)
- mensajes genéricos del nivel de usuario
- LOG_UUCP
- subsistema de UUCP
level¶
Esto determina la importancia del mensaje. Los niveles son, en orden de
importancia decreciente:
- LOG_EMERG
- el sistema está inutilizable
- LOG_ALERT
- debe tomarse una acción correctora inmediatamente
- LOG_CRIT
- condiciones críticas
- LOG_ERR
- condiciones de error
- LOG_WARNING
- condiciones de advertencia
- LOG_NOTICE
- condición normal, pero significativa
- LOG_INFO
- mensaje informativo
- LOG_DEBUG
- mensaje del nivel de depuración
La función
setlogmask(3) puede ser empleada para restringir el
registro solamente en niveles determinados.
Las funciones
openlog(),
closelog(), y
syslog() (pero no
vsyslog()) están especificadas en SUSv2 y POSIX 1003.1-2001.
POSIX 1003.1-2001 especifica solamente los valores
LOG_USER y
LOG_LOCAL* para
facility. Sin embargo, salvo la excepción
de
LOG_AUTHPRIV y
LOG_FTP, los otros valores de
facility
aparecen en la mayoría de sistemas Unix. El valor
LOG_PERROR
para
option no está especificado por POSIX 1003.1-2001, pero
está disponible en la mayoría de versiones de Unix.
HISTORIA¶
La función
syslog apareció en BSD 4.2. BSD 4.3 documenta
openlog(),
syslog(),
closelog(), y
setlogmask().
4.3BSD-Reno documenta también
vsyslog(). Por supuesto, funciones
v* anteriores usaban el mecanismo
<varargs.h> , que no es
compatible con
<stdarg.h>.
OBSERVACIONES¶
El parámetro
ident en la llamada a
openlog() es
probablemente almacenado tal cual. De esta manera, si la cadena a la que
apunta es modificada,
syslog() puede comenzar añadiendo la
cadena modificada, y si la cadena a la que apunta deja de existir, los
resultados son indefinidos. La mayor portabilidad se consigue usando una
cadena constante.
Nunca pase una cadena con datos de usuario como formato, use
syslog("%s", string);
en su lugar.
VÉASE TAMBIÉN¶
logger(1),
setlogmask(3),
syslog.conf(5),
syslogd(8)