GNU/Linux >> Tutoriales Linux >  >> Linux

hacer un archivo de registro

La forma estándar de iniciar sesión desde un programa C es syslog .

Comience por incluir el archivo de encabezado:

#include <syslog.h>

Luego, al principio de su programa, debe configurar syslog llamando a openlog :

openlog("programname", 0, LOG_USER);

El primer argumento es la identificación o la etiqueta, que se añade automáticamente al inicio de cada mensaje. Pon el nombre de tu programa aquí.

El segundo argumento son las opciones que desea usar, o 0 por el comportamiento normal. La lista completa de opciones está en man 3 syslog . Uno que podría encontrar útil es LOG_PID , lo que hace que syslog también registre la identificación del proceso en el mensaje de registro.

Luego, cada vez que desee escribir un mensaje de registro, llame a syslog :

syslog(LOG_INFO, "%s", "Message");

El primer argumento es la prioridad. La prioridad oscila entre DEBUG (menos importante) a EMERG (solo para emergencias) con DEBUG , INFO y ERR siendo el más utilizado. Ver man 3 syslog para sus opciones.

Los argumentos segundo y tercero son un formato y un mensaje, al igual que printf.

El archivo de registro en el que aparece depende de la configuración de syslog.

Con una configuración predeterminada, probablemente entre en /var/log/messages .

Puede configurar un archivo de registro personalizado utilizando una de las funciones en el rango LOG_LOCAL0 a LOG_LOCAL7 .

Los usas cambiando:

openlog("programname", 0, LOG_USER);

a

openlog("programname", 0, LOG_LOCAL0);

o

openlog("programname", 0, LOG_LOCAL1);

etc.

y agregando una entrada correspondiente a /etc/syslog.conf , por ejemplo

local1.info /var/log/programname.log

y reiniciando el servidor syslog, por ejemplo,

pkill -HUP syslogd

El .info parte de local1.info anterior significa que todos los mensajes que son INFO o más importantes serán registrados, incluyendo INFO , NOTICE , ERR (error), CRIT (crítico), etc., pero no DEBUG .

O, si tiene rsyslog , puede probar un filtro basado en propiedades, por ejemplo,

:syslogtag, isequal, "programname:"    /var/log/programname.log

La etiqueta syslog debe contener un ":".

O, si planea distribuir su software a otras personas, probablemente no sea una buena idea confiar en el uso de LOG_LOCAL o un rsyslog filtro.

En ese caso, deberías usar LOG_USER (si es un programa normal) o LOG_DAEMON (si es un servidor), escriba sus mensajes de inicio y mensajes de error usando syslog , pero escribe todos tus mensajes de registro en un archivo fuera de syslog . Por ejemplo, Apache HTTPd registra en /var/log/apache2/* o /var/log/httpd/* , supongo que usando open regular /fopen y write /printf llamadas.


Querrás #include <syslog.h> , luego usa el syslog() funciones para enviar datos a cualquier programa de registro del sistema que esté activo.

Vea la página man aquí.


Linux
  1. ¿Cómo hacer que el archivo sea disperso?

  2. ¿Cómo verificar syslog en Bash en Linux?

  3. Cambio de formato de fecha en syslog

  4. Capture la salida de nethogs en el archivo de registro

  5. ¿Cómo hago que un archivo NO sea modificable?

Cómo hacer un archivo ejecutable en Linux

Configurando logrotate en Linux

Rotación de archivos de registro

Comando make de Linux con ejemplos

¿Cómo hacer que ssh inicie sesión como el usuario correcto?

¿Rotación de registro de stdout?