Sorunu çözmenin daha zarif bir yolu olduğunu düşünüyorum: stdout / stderr'ı bir tanımlayıcı ile syslog'a gönderin ve syslog yöneticinize çıktısını program adına göre bölmesini söyleyin.
Systemd hizmet birimi dosyanızda aşağıdaki özellikleri kullanın:
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your program identifier> # without any quote
Ardından, dağıtımınızın syslog'ları yönetmek için rsyslog kullandığını varsayarsak /etc/rsyslog.d/<new_file>.conf
, aşağıdaki içeriğe sahip bir dosya oluşturun :
if $programname == '<your program identifier>' then /path/to/log/file.log
& stop
Şimdi günlük dosyasını syslog tarafından yazılabilir yapın:
# ls -alth /var/log/syslog
-rw-r----- 1 syslog adm 439K Mar 5 19:35 /var/log/syslog
# chown syslog:adm /path/to/log/file.log
Rsyslog ( sudo systemctl restart rsyslog
) 'u yeniden başlatın ve tadını çıkarın! Stdout / stderr programınıza yine journalctl ( sudo journalctl -u <your program identifier>
) aracılığıyla erişilebilir, ancak bunlar seçtiğiniz dosyada da kullanılabilir.
Kaynak archive.org üzerinden
journalctl -u
hala çalışıyor ancak belirtilen dosyaya hiçbir şey gönderilmiyor.