logger est un outil de ligne de commande utilisé dans les systèmes d’exploitation Linux et Unix afin d’ajouter des journaux au /var/log/syslog
fichier local ou au serveur Syslog distant. Logger fournit différentes options pour ajouter des journaux comme la définition de la priorité, la spécification d’un système distant ou la définition explicite du port Syslog.
La commande Logger est installée par défaut dans la plupart des distributions Linux. Il n’est donc pas nécessaire de l’installer explicitement. Nous pouvons imprimer l’aide et les informations d’utilisation avec l’option -h
comme ci-dessous. Les options les plus utilisées de la commande logger seront listées avec une certaine description.
$ logger -h
Alternativement, pour une aide et des informations d’utilisation plus détaillées, nous pouvons regarder et utiliser la page de manuel de la commande logger comme ci-dessous.
$ man logger
Syntaxe de la commandelogger
La commandelogger a une syntaxe simple où d’abord les options fournies et ensuite le journal ou le message que nous voulons envoyer à Syslog.
logger OPTIONS LOG
- `OPTIONS` sont une ou plusieurs options pour définir certains attributs comme le serveur distant, le port, l’installation de log etc.
- `LOG` est le message de log que nous voulons ajouter ou envoyer. L’entourer de guillemets doubles le rendra plus fiable.
Linux Syslog
Le mécanisme Syslog est une partie importante de la journalisation Linux. La plupart des distributions Linux comme Ubuntu, Debian, CentOS, Mint, RedHat, Suse stocke les fichiers journaux sous le répertoire /var/log
. Il existe différents types de journaux sous ce répertoire comme auth, MySQL, apache, etc. Syslog est un fichier journal générique et le système utilisé pour stocker les journaux liés au système, aux services, etc. Le fichier syslog
peut être consulté avec la commande tail comme ci-dessous.
$ tail /var/log/syslog
Imprimer les journaux de Syslog
Avant de commencer à ajouter un journal au fichier syslog, imprimer le fichier syslog actuel sera très bénéfique. Nous pouvons utiliser différentes commandes pour imprimer le fichier syslog. tail
est une commande utilisée pour imprimer les 10 dernières lignes du fichier donné. Alternativement, nous pouvons fournir le nombre de lignes que nous voulons imprimer explicitement. Dans l’exemple suivant, nous allons imprimer 30 lignes du /var/log/syslog
. Nous utiliserons l’option -n
afin de préciser le nombre de lignes.
$ tail -n 30 /var/log/syslog
Ajouter un journal au fichier Syslog
Démarrons avec un exemple simple de la commande logger. Nous allons juste ajouter une seule ligne au fichier syslog sans fournir aucune option à la commande logger. Dans l’exemple suivant, nous allons ajouter la ligne « This is just a simple log line » au fichier syslog. Ensuite, nous allons lister en utilisant la commande tail.
$ logger "This is just a simple log line"
Nous pouvons voir que le journal est ajouté à la fin du fichier qui est listé en bas. Il y a aussi quelques informations sur le journal comme ci-dessous.
- `Feb 26 01:20:47` est l’horodatage ou l’information de date sur le journal quand il est ajouté au fichier syslog.
- `poftut-com` est le nom du système.
- `ismail` est le nom de l’utilisateur ou du logger.
Spécifier la priorité ou l’installation du journal
Généralement, les journaux sont priorisés par les ressources de création du journal. Cela s’appelle aussi une facilité utilisée pour catégoriser les logs. Nous pouvons fournir la priorité ou la facilité en utilisant l’option -p
ou --priority
long-form. Si nous ne fournissons pas la priorité de l’installation, celle par défaut est user.notice
. Dans l’exemple suivant, nous définirons la priorité de lof comme local3.info
.
$ logger -p "local3.info" "This is just a simple log line"
Spécifier l’adresse IP du serveur Syslog distant
Par défaut, la commande logger placera la ligne de journal donnée dans le fichier /var/log/syslog
du système local. Mais ce n’est pas toujours le cas. Dans les environnements d’entreprise, les logs doivent être collectés et gérés dans un serveur de log central. Nous pouvons utiliser la commande logger afin d’envoyer le log donné dans le serveur distant en fournissant l’adresse IP ou le nom d’hôte. Nous utiliserons l’option -n
ou --server
pour envoyer le log serveur distant.
$ logger -n 192.168.1.10 "This is just a simple log line"
Utiliser TCP comme protocole Syslog
Syslog utilise le protocole UDP par défaut. UDP fournit une transmission plus rapide, à faible ressource et facile des fichiers journaux. Mais UDP ne fournit pas une fiabilité complète où TCP entre en jeu. Nous pouvons changer le protocole de transmission par défaut UDP en TCP en utilisant l’option -T
ou --tcp
.
$ logger -n 192.168.1.10 -T "This is just a simple log line"
Spécifier le numéro de port du serveur Syslog distant
Lors de l’envoi d’un journal du système local au système distant, le port par défaut du syslog est 514 pour les deux protocoles UDP et TCP. Nous pouvons changer le numéro de port explicitement en utilisant l’option -P
ou --port
en fournissant le numéro de port.
$ logger -n 192.168.1.10 -P 1514 "This is just a simple log line"
Rediriger la sortie de la commande en tant que journal
Linux fournit de nombreux outils qui enregistrent leurs actions avec précision. Nous pouvons utiliser la commande logger afin d’envoyer ces commandes en sortie comme un journal. e va juste utiliser les backticks du shell bash pour entourer la commande. Ci-dessous, nous allons enregistrer la commande who
dans le syslog.
$ logger `who`
La dernière ligne du syslog fournit la sortie de la commande who qui contient le nom d’utilisateur, le numéro de console et la date de l’utilisateur actuellement connecté.
Loger le fichier spécifié
Nous pouvons mettre le contenu d’un fichier texte ligne par ligne dans le fichier syslog. Nous allons utiliser l’option -f
et fournir le fichier que nous voulons journaliser. Dans cet exemple, nous allons journaliser le fichier nommé hostnames
.
$ logger -f hostnames
Définir ou limiter la taille du journal
Les journaux sont utilisés pour créer des informations simples. Donc quand il y a quelques lignes avec beaucoup de données, elles doivent être traduites ou fixer une limite. Nous pouvons définir une limite pour le nombre de caractères des lignes du journal en utilisant l’option --size
et le nombre de caractères que nous voulons définir. Dans l’exemple suivant, nous allons définir le compte ou la limite à 10.
$ logger --size 10 123456789012345678901234567
Ignorer les lignes vides ou vides
Lors de la lecture des lignes du journal à partir d’un fichier, il peut y avoir des lignes vides ou vides. La journalisation des lignes vides ou vides n’est pas efficace, nous pouvons donc ignorer les lignes vides ou vides en utilisant l’option -e
comme ci-dessous.
$ logger -e -f hostnames
.