web-dev-qa-db-fra.com

Où est-ce que Linux stocke mon syslog?

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

tail -n 100 /var/log/messages

mais les messages de fichier n'existent ni testés ni quelque chose. Ci-dessous vous pouvez trouver mon code. Peut-être que je fais quelque chose de mal, le fichier n'est pas stocké là-bas ou j'ai besoin d'activer la connexion à 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;
}
66
opc0de

Sur ma machine Ubuntu, je peux voir la sortie à /var/log/syslog.

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

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

Comme d'autres l'ont noté, votre sortie syslog() serait enregistrée dans le fichier /var/log/syslog.
Vous pouvez voir les journaux système, utilisateur et autres en /var/log.

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

58
TheCottonSilk

Les emplacements de journal par défaut (rhel) sont

Messages généraux:

/var/log/messages

Messages d'authentification:

/var/log/secure

Événements mail:

/var/log/maillog

Vérifiez votre /etc/syslog.conf ou /etc/syslog-ng.conf (cela dépend de l'installation de syslog que vous avez installée).

Exemple:

$ 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
19
rkosegi

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

Chacune de ces fonctions doit avoir des pages de manuel associées.

Si vous exécutez man -k syslog (une recherche par mot-clé dans les pages de manuel), vous obtiendrez une liste des pages de manuel qui font référence à ou qui 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 pour approfondir davantage.

Voici un extrait de la page de manuel 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 la course ci-dessus

$man man 

Ainsi, si vous exécutez man 3 syslog, vous obtenez une page de manuel complète pour la fonction 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);

Pas une réponse directe mais j'espère que vous trouverez cela utile.

19
Rob Kielty

Vous devez indiquer au système quelles informations consigner et où placer les informations. La journalisation est configurée dans le fichier /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.

8
david tooke

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

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

Comment changer les options dans ce fichier? Ici vous allez http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html

4
Clément

La journalisation est très configurable sous Linux, et vous voudrez peut-être examiner votre /etc/syslog.conf (ou peut-être sous /etc/rsyslog.d/). Les détails dépendent du sous-système de journalisation et de la distribution.

Regardez aussi dans les fichiers sous /var/log/ (et exécutez peut-être dmesg pour les journaux du noyau).

4