Escribí una aplicación de prueba simple para registrar algo en un archivo de registro. Estoy usando linux mint y después de que la aplicación se ejecuta, intento ver el registro usando este comando:
tail -n 100 /var/log/messages
pero el archivo de mensajes no existe ni probado o algo así. A continuación puede encontrar mi código. Quizás estoy haciendo algo mal, el archivo no está almacenado allí o necesito habilitar el registro en Linux Mint.
#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>
void init_log()
{
setlogmask(LOG_UPTO(LOG_NOTICE));
openlog("testd",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
}
int main(void) {
init_log();
printf("Session started!");
syslog(LOG_NOTICE, "Session started!!");
closelog();
return EXIT_SUCCESS;
}
/etc/
que debe cambiar por su identificador ("test"
en su caso) e instalación.Respuestas:
En mi máquina Ubuntu, puedo ver la salida en
/var/log/syslog
.En una máquina RHEL / CentOS, la salida se encuentra en
/var/log/messages
.Esto está controlado por el
rsyslog
servicio, por lo que si está deshabilitado por alguna razón, es posible que deba iniciarlosystemctl start rsyslog
.Como han señalado otros,
syslog()
el/var/log/syslog
archivo registrará su salida .Puede ver el sistema, el usuario y otros registros en
/var/log
.Para más detalles: aquí hay un enlace interesante .
fuente
/var/log/syslog
sea un verdadero defecto; quizás Ubuntu lo configura por sí mismo.Además de la respuesta aceptada, es útil saber lo siguiente ...
Cada una de esas funciones debe tener páginas de manual asociadas.
Si ejecuta
man -k syslog
(una búsqueda por palabra clave de páginas de manual) obtendrá una lista de páginas de manual que hacen referencia a syslog o son sobre$ man -k syslog logger (1) - a shell command interface to the syslog(3) system l... rsyslog.conf (5) - rsyslogd(8) configuration file rsyslogd (8) - reliable and extended syslogd syslog (2) - read and/or clear kernel message ring buffer; set c... syslog (3) - send messages to the system logger vsyslog (3) - send messages to the system logger
Debe comprender las secciones del manual para profundizar más.
Aquí hay un extracto de la página de manual de man, que explica las secciones de la página de manual:
The table below shows the section numbers of the manual followed by the types of pages they contain. 1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd 6 Games 7 Miscellaneous (including macro packages and conven‐ tions), e.g. man(7), groff(7) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard]
Para leer la ejecución anterior
Entonces, si ejecuta
man 3 syslog
, obtiene una página de manual completa para lasyslog
función que llamó en su código.SYSLOG(3) Linux Programmer's Manual SYSLOG(3) NAME closelog, openlog, syslog, vsyslog - send messages to the system logger SYNOPSIS #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);
No es una respuesta directa, pero espero que le resulte útil.
fuente
La ubicación predeterminada del registro (rhel) es
Mensajes generales:
/var/log/messages
Mensajes de autenticación:
/var/log/secure
Eventos de correo:
/var/log/maillog
Verifique su
/etc/syslog.conf
o/etc/syslog-ng.conf
(depende de la función de syslog que haya instalado)Ejemplo:
$ cat /etc/syslog.conf # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* /var/log/maillog #For a start, use this simplified approach. *.* /var/log/messages
fuente
Tienes que decirle al sistema qué información registrar y dónde poner la información. El registro se configura en el
/etc/rsyslog.conf
archivo, luego reinicie rsyslog para cargar la nueva configuración. Las reglas de registro predeterminadas suelen estar en un/etc/rsyslog.d/50-default.conf
archivo.fuente
syslog () genera un mensaje de registro, que será distribuido por syslogd.
El archivo para configurar syslogd es /etc/syslog.conf. Este archivo le dirá dónde se registran los mensajes.
¿Cómo cambiar las opciones en este archivo? Aquí tienes http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html
fuente
El registro es muy configurable en Linux, y es posible que desee examinar su
/etc/syslog.conf
(o quizás debajo/etc/rsyslog.d/
). Los detalles dependen del subsistema de registro y la distribución.Busque también en los archivos debajo
/var/log/
(y quizás ejecute losdmesg
registros del kernel).fuente
Estoy ejecutando Ubuntu bajo WSL (Subsistema de Windows para Linux) y
systemctl start rsyslog
no funcionó para mí.Entonces lo que hice fue esto:
Ahora el
syslog
archivo aparecerá en/var/log/
fuente