Я запускаю java-приложения через systemd:
[Unit]
Description=test service
[Service]
Type=simple
EnvironmentFile=/etc/sysconfig/testserver
WorkingDirectory=/opt/testserver
ExecStart=/usr/bin/java -jar /opt/testserver/test.jar
StandardOutput=syslog
StandardError=syslog
User=testserver
Group=testserver
SyslogIdentifier=testserver
[Install]
WantedBy=multi-user.target
я хочу получить stdout
в /opt/testserver/stdout.log
и stderr
в /opt/testserver/stderr.log
- допустимы любые варианты работы (т.е. если возможно syslog
). Если возможно, я хочу избежать записи хотя бы одного из них в журнал journald.
Спасибо...
Я пытаюсь выполнить следующее для Logstash, чтобы заменить его сценарий init.d. По сути, оборачивание его с помощью bash для обеспечения перенаправления stdout и stderr. Не уверен, что это именно то, что вы хотите или хотите использовать (это не слишком ужасно, но явно не так, как systemd хочет, чтобы вы это делали), но мне нужно было что-то, чтобы оно началось после Elasticsearch, и я не хотел моя команда, чтобы заметить что-либо другое о том, где оказались файлы журнала, так что, надеюсь, это поможет мне, пока они предоставить один из своих:
[Unit]
Description=Logstash
After=elasticsearch.service
Requires=elasticsearch.service
[Service]
Type=simple
User=logstash
Group=logstash
ExecStart=/bin/bash -c 'exec /opt/logstash/bin/logstash agent \
-f /etc/logstash/conf.d \
-l /var/log/logstash/logstash.log \
>/var/log/logstash/logstash.stdout \
2>/var/log/logstash/logstash.err'
WorkingDirectory=/var/lib/logstash
LimitNICE=19
LimitNOFILE=16384
Restart=always
[Install]
WantedBy=multi-user.target
Изменить: я только что понял, что могу создать /etc/systemd/system/logstash.service.d/after-es.conf
следующим образом, и не нужно переписывать их сценарий init.d:
[Unit]
After=elasticsearch.service
Requires=elasticsearch.service
Ну что ж, оставим вышесказанное на случай, если это будет полезно.