J'exécute une application de nœud à l'aide de systemd avec un fichier unité. Le journal des applications peut être consulté à l'aide de journalctl -u example.com
, mais le journal est coupé à un moment donné, ce qui efface l'historique (ce dont j'ai besoin pour le débogage).
Comment configurer la rotation des journaux avec systemd pour que les journaux de mes applications soient stockés dans example.com.log.1
, example.com.log.2
, etc., afin que je puisse interroger l'historique de mon application?
Ceci est mon fichier d'unité:
ExecStart=/usr/bin/node keystone.js
#Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=example.com
User=user
Group=user
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
Augmentation du stockage
Si vous enregistrez sur le disque, vous pouvez augmenter la quantité d’espace utilisé en modifiant SystemMaxUse
et/ou SystemKeepFree
. Avoir plus d'espace permettrait de stocker plus d'entrées.
Par défaut, la limite d'utilisation maximale (SystemMaxUse
) est de 10% du système de fichiers et la valeur d'espace libre minimal (SystemKeepFree
) est de 15% - bien qu'ils soient tous deux plafonnés à 4G.
Rotation du journal
Les journaux doivent être pivotés automatiquement lorsqu'ils atteignent la valeur SystemMaxFileSize
, et le nombre de journaux est contrôlé par SystemMaxFiles
. Si vous préférez une rotation basée sur le temps, vous pouvez définir une variable MaxFileSec
pour définir le nombre maximal d'entrées de temps stockées dans un seul journal.
Remarque sur l'emplacement/le type de stockage
Avec journald, vous pouvez choisir de stocker les entrées de journal en mémoire (Storage=volatile
) ou sur disque (Storage=persistent
). Ce qui précède suppose que vous stockez des journaux sur disque. Si ce n’est pas le cas, vous devrez remplacer "Système" par "Exécution" dans les variables ci-dessus.
De plus amples détails sont disponibles dans man journald.conf
.
Alternative - Transmission des écritures au journal
Si vous connaissez déjà le démon SYSLOG traditionnel, vous pouvez transmettre les événements de journal en définissant l'option ForwardToSyslog
(qui transfère immédiatement les messages) ou en faisant en sorte que le démon syslog bahave ressemble à un client de journal et récupère lui-même les journaux.