87 votes

Où linux stocke-t-il mon syslog ?

J'ai écrit une application de test simple pour enregistrer quelque chose dans un fichier journal. J'utilise linux mint et après l'exécution de l'application, j'essaie d'afficher le journal en utilisant cette commande :

tail -n 100 /var/log/messages

mais le fichier messages n'existe pas ni testé ou autre. Ci-dessous vous pouvez trouver mon code. Peut-être que je fais quelque chose de mal, le fichier n'est pas stocké là ou je dois activer la journalisation dans 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;
}

87voto

TheCottonSilk Points 2976

Sur ma machine Ubuntu, je peux voir le résultat à l'adresse suivante /var/log/syslog .

Sur une machine RHEL/CentOS, la sortie se trouve dans /var/log/messages .

Ceci est contrôlé par le rsyslog Si ce service est désactivé pour une raison quelconque, vous devrez peut-être le démarrer avec systemctl start rsyslog .

Comme d'autres l'ont fait remarquer, votre syslog() La sortie serait enregistrée par le /var/log/syslog fichier.
Vous pouvez consulter les journaux système, utilisateur et autres à l'adresse suivante /var/log .

Pour plus de détails : voici un lien intéressant .

24voto

rkosegi Points 3657

Les emplacements par défaut des journaux (rhel) sont

Messages généraux :

/var/log/messages

Messages d'authentification :

/var/log/secure

Événements de courrier :

/var/log/maillog

Vérifiez votre /etc/syslog.conf o /etc/syslog-ng.conf (cela dépend du service syslog que vous avez installé)

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

24voto

Rob Kielty Points 3274

En plus de la réponse acceptée, il est utile de connaître les éléments suivants ...

Chacune de ces fonctions doit avoir pages de manuel qui leur sont associés.

Si vous exécutez man -k syslog (une recherche de pages de manuel par mot-clé), vous obtiendrez une liste des pages de manuel qui font référence à, ou concernent syslog

$ 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

Vous devez comprendre les sections du manuel afin d'aller plus loin.

Voici un extrait de la page de manuel de man, qui explique les sections de la page de manuel :

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]

Pour lire l'exécution ci-dessus

$man man 

Donc, si vous exécutez man 3 syslog vous obtenez une page de manuel complète pour le syslog que vous avez appelée dans votre code.

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);

Ce n'est pas une réponse directe, mais j'espère que cela vous sera utile.

9voto

david tooke Points 91

Vous devez indiquer au système quelles informations doivent être consignées et où les placer. La journalisation est configurée dans la section /etc/rsyslog.conf puis redémarrez rsyslog pour charger la nouvelle configuration. Les règles de journalisation par défaut sont généralement dans un fichier /etc/rsyslog.d/50-default.conf fichier.

4voto

Clément Points 304

Syslog() génère un message de journal, qui sera distribué par syslogd.

Le fichier permettant de configurer syslogd est /etc/syslog.conf. Ce fichier vous indiquera où les messages sont enregistrés.

Comment modifier les options de ce fichier ? Voici comment procéder http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X