web-dev-qa-db-fra.com

Comment puis-je obtenir une unité systemd pour rediriger ou copier les journaux vers syslog?

J'utilise Ubuntu 16.04 Server avec un service node.js, où je dois obtenir le journal écrit dans un fichier, comme le bon vieux syslog :)

Je suis allé chercher sur Google la moitié de la nuit, mais rien ne s'est produit.

La raison derrière ce besoin étrange est que nous collectons les journaux via FileBeat et les envoyons à un cluster ElasticSearch.

3
Nicky Larstrup

Nous avons trouvé une solution de contournement à l'aide de systemd pour exécuter journalctl immédiatement après le démarrage du service, ce dont j'ai besoin pour obtenir un journal.

Ajoutez un script de service systemd pour créer un fichier journal pour "MyService" /etc/systemd/system/multi-user.target.wants/MyService-journalctl-to-log.service:

[Unit]
Description=MyService journalctl parser to filebeat
#I needed to get a log file for filebeat to read
#Wants=filebeat.service
#After=filebeat.service

[Service]
Restart=always
RestartSec=5
ExecStart=/bin/sh -c '/bin/journalctl --no-tail -f -u MyService.service  > /var/log/MyService.log 2>&1'
ExecStartPre=/bin/journalctl --vacuum-size=10M

[Install]
WantedBy=multi-user.target

Activer et démarrer le nouveau service systemd

systemctl enable MyService-journalctl-to-log.service
systemctl start MyService-journalctl-to-log.service
2
Nicky Larstrup