syslog, openlog, closelog ou setlogmask Sous-routine

Objectif

Contrôle le journal système.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

#include < syslog.h >

void openlog ( ID, LogOption, Facility) const char *ID; int LogOption, Facility;

void syslog ( Priorité, Valeur, ... ) int Priorité; const char *Value;

closelog vide ()

int setlogmask( MaskPriority ) int MaskPriority;

void bsdlog (Priorité, Valeur,...) int Priorité; const char *Value;

Descriptif

Attention: n'utilisez pas la sous-routine syslog, openlog, closelogou setlogmask dans un environnement à unités d'exécution multiples. Voir les alternatives multithread dans la syslog_r (syslog_r, openlog_r, closelog_r ou setlogmask_r Subroutine), openlog_r, closelog_r, ou l'article de sous-routine setlogmask_r . La sous-routine syslog n'admet pas les unités d'exécution multiples ; pour les programmes autorisant les unités d'exécution multiples, la sous-routine syslog_r doit être utilisée à la place.

La sous-routine syslog écrit des messages dans le journal système géré par la commande syslogd .

Remarque: Les messages transmis à syslog dont la longueur est supérieure à 900 octets peuvent être tronqués par syslogd avant d'être consignés.

Le message est similaire à la chaîne printf fmt , avec la différence que %m est remplacé par le message d'erreur en cours obtenu à partir de la variable globale errno . Une nouvelle ligne de fin peut être ajoutée au message si nécessaire.

Les messages sont lus par la commande syslogd et écrits dans la console système ou dans le fichier journal, ou transmis à la commande syslogd sur l'hôte approprié.

Si un traitement spécial est requis, la sous-routine openlog peut être utilisée pour initialiser le fichier journal.

Les messages sont balisés avec des codes indiquant le type de Priorité pour chacun d'eux. Une priorité est codée en tant que fonction, qui décrit la partie du système générant le message, et en tant que niveau, qui indique la gravité du message.

Si la sous-routine syslog ne peut pas transmettre le message à la commande syslogd , elle écrit le message dans le fichier /dev/console , à condition que l'option LOG_CONS soit définie.

La sous-routine closelog ferme le fichier journal.

La sous-routine setlogmask utilise le masque de bit du paramètre MaskPriority pour définir le nouveau masque de priorité de journal et renvoie le masque précédent.

Les macros LOG_MASK et LOG_UPTO du fichier sys/syslog.h sont utilisées pour créer le masque de priorité. Les appels à la sous-routine syslog avec un masque de priorité qui n'autorise pas la consignation de ce niveau de message particulier entraînent le renvoi de la sous-routine sans consignation du message.

Paramètres

Article Descriptif
id Contient une chaîne associée au début de chaque message. Le paramètre Fonction code une fonction par défaut de la liste précédente à affecter aux messages qui n'ont pas de fonction explicite codée.
LogOption Indique une zone de bit qui indique les options de consignation. Les valeurs de LogOption sont les suivantes:
LOG_CONS
Envoie des messages à la console s'il est impossible de les envoyer à la commande syslogd . Cette option est utile dans les processus démon qui n'ont pas de terminal de contrôle.
LOG_NDELAY
Ouvre la connexion à la commande syslogd immédiatement, au lieu du moment où le premier message est consigné. Cette option est utile pour les programmes qui doivent gérer l'ordre dans lequel les descripteurs de fichier sont alloués.
NEIGE_JOURNAL
Consigne les messages sur la console sans attendre les enfants bifurqués. Utilisez cette option pour les processus qui activent la notification de l'arrêt de l'enfant via SIGCHLD; sinon, la sous-routine syslog peut se bloquer en attendant un processus enfant dont le statut de sortie a déjà été collecté.
LOG_ODELAY
Retarde l'ouverture jusqu'à ce que la sous-routine syslog soit appelée.
LOG_PID
Consigne l'ID de processus avec chaque message. Cette option est utile pour identifier les démons.
Installation Indique les valeurs suivantes qui ont généré le message:
LOG_AUTH
Indique le système d'autorisation de sécurité: la commande login , la commande su , etc.
DÉMON
Consigne les démons système.
LOG_KERN
Consigne les messages générés par le noyau. Les processus du noyau doivent utiliser la routine bsdlog pour générer des messages syslog . La syntaxe de bsdlog est identique à celle de syslog. Les messages bsdlog ne peuvent être créés que par des processus de noyau et doivent avoir la priorité LOG_KERN . La sous-routine syslog ne peut pas consigner les messages de la fonction LOG_KERN . A la place, il consigne les messages de la fonction LOG_USER .
LOG_LPR
Consigne le système de spoulage de l'imprimante par ligne.
LOG_LOCAL0 via LOG_LOCAL7
Réservé à une utilisation locale.
JOURNAL_MESSAGERIE
Consigne le système de messagerie.
JOURNAL_NOUVELLES
Consigne le sous-système d'informations.
LOG_UUCP
Consigne le sous-système UUCP.
UTILISATEUR_journal
Consigne les messages générés par les processus utilisateur. Il s'agit de la fonction par défaut lorsqu'aucune n'est spécifiée.
Priority Indique la partie du système qui génère le message et, en tant que niveau, indique la gravité du message. Le niveau de gravité est sélectionné dans la liste suivante:
ALERTE
Indique une condition qui doit être corrigée immédiatement ; par exemple, une base de données endommagée.
LOG_CRIT
Indique des conditions critiques ; par exemple, des erreurs d'unité matérielle.
LOG_DEBUG (DEBOGAGE)
Affiche des messages contenant des informations utiles pour déboguer un programme.
LOG_EMERG
Indique une condition de panique signalée à tous les utilisateurs ; le système est inutilisable.
ERRE_LOGSE
Conditions d'erreur indiquées.
INFO
Indique les messages d'information générale.
AVERTISSEMENT
Indique une condition nécessitant un traitement spécial, mais pas une condition d'erreur.
AVERTISSEMENT
Consigne les messages d'avertissement.
MaskPriority Active la consignation pour les niveaux indiqués par les bits du masque qui sont définis et désactivés lorsque les bits ne sont pas définis. Le masque par défaut permet de consigner toutes les priorités.
Valeur Indique les valeurs données dans les paramètres Valeur et suit la même syntaxe que le paramètre Format de la sous-routine printf .

Exemples

  1. Pour consigner un message d'erreur concernant une éventuelle violation de sécurité, telle que la suivante, entrez:
    syslog (LOG_ALERT, "who:internal error 23");
     
  2. Pour initialiser le fichier journal, définir le masque de priorité de journal et consigner un message d'erreur, entrez:
    openlog ("ftpd", LOG_PID, LOG_DAEMON);
    setlogmask (LOG_UPTO (LOG_ERR));
    syslog (LOG_INFO, ""); 
     
  3. Pour consigner un message d'erreur provenant du système, entrez:
    syslog (LOG_INFO | LOG_LOCAL2, "foobar error: %m");