Forum Linux.général syslog

Posté par  .
Étiquettes : aucune
2
20
déc.
2008
Bonjour,

j'ai un tas de petits scripts qui gèrent mes machines et je leur fait écrire des informations importantes dans /var/log/nom_du_script
Pour faire ça il faut que je crée un utilisateur nom_du_script, que je crée le fichier log avec le bon propriétaire et il faut que j'indique en dur dans mon script ou dans sa config où écrire.

Ca marche bien mais j'aimerai utiliser syslog pour ça. Y'a t'il un moyen d'utiliser autre chose que local0 local1 local2 etc avec les syslog actuels ? Je ne trouve aucune réponse allant dans ce sens.
Ca m'arrangerait bien de pouvoir appeler syslog avec mon_script comme nom de facility, et syslog écrirait alors ça à l'endroit qui lui est indiqué dans son fichier de config. Ca pourrait être dans /var/log/messages ou dans /var/log/mon_script ou ce que je veux. Ca permet aussi de profiter de la puissance de syslog qui permet entre autres d'envoyer les log sur une autre machine. J'ai pas trop envie de coder ça en dur dans tous mes scripts.
  • # re

    Posté par  . Évalué à 4.

    Les facility de syslog sont définies et ne peuvent pas être étendues:
    Extrait de syslog.conf(5):

    The facility is one of the following keywords: auth, authpriv, cron,
    daemon, ftp, kern, lpr, mail, mark, news, security (same as auth), sys-
    log, user, uucp and local0 through local7. The keyword security should
    not be used anymore and mark is only for internal use and therefore
    should not be used in applications. Anyway, you may want to specify
    and redirect these messages here. The facility specifies the subsystem
    that produced the message, i.e. all mail programs log with the mail
    facility (LOG_MAIL) if they log using syslog.


    Ensuite, dans ton script tu peux utiliser logger(1) qui te permet d'envoyer des
    messages dans syslog. L'option -p te permet de préciser le couple facility/priority de la forme -p daemon.warning par exemple.
    Tu as par contre l'argument -t qui te permet de rajouter eventuellement le nom de ton script en début de chacune des lignes envoyées, ces ce tag qui est ensuite exploités par php-syslog-ng et consors comme nom de programme.
  • # syslog-ng

    Posté par  . Évalué à 4.

    avec syslog-ng tu peux matcher les lignes suivant plusieurs critères
    - les facility
    - les programmes executé
    - une chaine dans la ligne de log
    - ...

    Tu peux aussi utiliser des variables comme $HOST (l'hote qui t'envoie les infos) , $YEAR, ...

    exemple
    destination user1 { file("/var/log/$HOST/$YEAR/$MONTH/$DAY/file-user1" owner("user1") perm("0644"));};
    filter user1 { match ("USER : User1") and program("hddtemp");}

    log {
    source (s_all);
    filter (user1);
    destination(user1);
    };
    • [^] # Re: syslog-ng

      Posté par  . Évalué à 2.

      Merci, c'est le type d'information qui me dépanne bien.
      Il ne me reste plus qu'à plancher sur syslog-ng car je crois que c'est nettement plus souple.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.