Systemd service n'écrit pas dans le journal?

Bonjour à tous.
Sous Debian 12, je n’arrive pas à comprendre pourquoi ce service n’écrit pas dans le journal.
Merci d’avance pour toute aide.

[Unit]
Description = Essai 2 - 01/06/24

[Service]
ExecStart=/usr/bin/echo aaa
#StandardOutput=file:/tmp/service.log		# Ok
StandardOutput=journal				        # "journalctl -f" ne voit rien

[Install]
WantedBy=multi-user.target

Tu veux dire dans le syslog ?

Si c’est le cas alors c’est plutôt ça :

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nom

Il y a moult documentation sur la toile à propos de systemd et des options des unité que l’on créer ou customise.

Maintenant si tu cherche à cérire dans un fichier particulier ce sera plutôt ça (ne pas oublier de gérer la rotation de ces derniers ^^ :

StandardOutput=append:/path-de-ton-fichier-de-log/nom-du-fichier.log
StandardError=append:/path-de-ton-fichier-de-log/nom-du-fichier.log
1 J'aime

Non, dans le journal systemd comme je l’ai écrit dans mon post : « journalctl -f » ne voit rien

Pour info le retour avec syslog
Standard output type syslog is obsolete, automatically updating to journal

En fait syslog dependait de rsyslog. Et par défaut, rsyslog n’est plus installé par Debian.
Personnellement je ai rétabli rsyslog car ça reste plus facile à gérer que journald et qui plus est un grand nombre d’analyseur de logs be peuvent pas traiter avec journald.

Ok pour rsyslog que j’utilise également sur d’autres systèmes, je souhaitais simplement utiliser systemd « basiquement » et je coince sur qqc qui ne fonctionne pas comme je l’ai compris …

StandardError=journal
StandardOutput=journal

Il te faut les deux, car la sortie stderr est aussi à mettre.

StandardOuput sert à afficher les sortie de ton script comme par exemple echo ou printf.

[Service]
; These defaults may be overridden in systemd-system.conf(5).
;StandardError=journal
;StandardOutput=journal

; These defaults may be overridden in journald.conf(5).
;LogLevelMax=debug
;LogRateLimitIntervalSec=10000
;LogRateLimitBurst=30s

; Extra fields may be added to every message.
;LogExtraFields=

;; Other settings:

; Defaults to process name. NOT the unit name, but rather basename(3) of the $0.
;SyslogIdentifier=

; For messages written without the <N> prefix.
;SyslogLevel=info

;SyslogFacility=daemon

; For completeness only: The level-parsing machinery can be disabled, but that
; was the whole point...
;SyslogLevelPrefix=true

Idem si j’ajoute StandardError, ceci dit mon echo ne sort pas en erreur, il fonctionne parfaitement quand je sors dans un fichier.

Bien embrouillé comme sujet.

Le problème est qu’un fichier service n’a pas pour rôle de définir un fichier log.
La configuration générale du journal systemd peut être résumée par:
systemd-analyze cat-config systemd/journald.conf

Sans rien faire de spécial, le service suivant est bien rapporté par journalctl

création de /etc/systemd/user/echotest.service

[Service]
ExecStart=/usr/bin/echo aaa
systemctl --user start echotest.service

	01/06/2024 12:38	systemd	Started echotest.service.
	01/06/2024 12:38	echo	aaa
1 J'aime

pour écrire dans les logs mieux vaut utiliser logging c’est fait pour ça ou plutôt systemd-cat maintenant.

1 J'aime

Merci du rappel, j’avais oublié que j’avais modifié le fichier de conf avec la ligne

> MaxLevelStore=notice

pour limiter les logs !..

quand j’ai créer un service, j’ai rien ajouté de particulier dans les logs.
il suffit de lancer la commande :

journalctl -fu test.service

j’ai trouvé des infos sur le sujet : https://www.baeldung.com/linux/redirect-systemd-output-to-file