[CentOS] systemd does not generate both StandardOutput and StandardError files in /var/log/ directory

Fri Nov 5 08:45:25 UTC 2021
Simon Matter <simon.matter at invoca.ch>

Hi,

> Hi,
>
> I am running CentOS Linux release 7.9.2009 (Core). I have created a
> systemd
> service for a java service. I want to capture both stdout and stderr to
> files under /var/log directory.
> # cat /etc/redhat-release
> CentOS Linux release 7.9.2009 (Core)
> #
> # rpm -qa | grep systemd
> systemd-sysv-219-78.el7_9.3.x86_64
> systemd-libs-219-78.el7_9.3.x86_64
> systemd-219-78.el7_9.3.x86_64
>
> # cat /etc/systemd/system/smartresponse.service
> [Unit]
> Description=Smart Response Service
>
> [Service]
> WorkingDirectory=/opt/demo
> ExecStart=/bin/java -jar old2-wsb-smart-response-0.0.2-SNAPSHOT.jar
> Type=simple
> Restart=on-failure
> RestartSec=10
> StandardOutput=file:/var/log/smartresponseserviceoutput.log
> StandardError=file:/var/log/smartresponseserviceerror.log
>
> [Install]
> WantedBy=multi-user.target
> #
>
> The files /var/log/smartresponseserviceoutput.log and
> /var/log/smartresponseserviceoutput.log are not created. Please guide.

I think the "file:" method is not supported with your version of systemd. See
`man systemd.exec' for more info.

You could use a shell script to work around this limitation, something like

--%<---
#!/bin/bash

exec java -jar old2-wsb-smart-response-0.0.2-SNAPSHOT.jar >>
/var/log/smartresponseserviceoutput.log 2>>
/var/log/smartresponseserviceerror.log
--%<---

Regards,
Simon