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