Я использую двоичный код Go в качестве службы в ubuntu 16.04 и не могу создать файл журнала, принадлежащий syslog. Я создал сервисы для myapp.service, и он выглядит следующим образом:
[Unit]
Description=myapp
[Service]
Type=simple
Restart=always
RestartSec=30
WorkingDirectory= /home/go/src/myapp
ExecStart=/home/go/src/myapp/myapp
# myapp.log owned by syslog
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/log/myapp
ExecStartPre=/bin/chown syslog:adm /var/log/myapp
ExecStartPre=/bin/chmod 755 /var/log/myapp
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp
[Install]
WantedBy=multi-user.target
Теперь он просто создает папку внутри / var / log / myapp. Но не создает файл myapp.log внутри папки myapp. Я могу проверить эти журналы с помощью команды ::
sudo journalctl -f -u myapp
. Она покажет все журналы внутри терминала. У меня следующие вопросы ::
Если вы используете rsyslog для управления системными журналами, создайте файл внутри /etc/rsyslog.d/myapp. conf со следующим содержанием:
if $programname == 'myapp' then /var/log/myapp/myapp.log
& stop
Теперь перезапустите службу rsyslog, вы должны увидеть прослушиватель системного журнала на порту 514, перезапустите myapp, и теперь вы должны увидеть события журнала, отправляемые в файл журнала.
sudo systemctl restart rsyslog
sudo systemctl restart myapp
Но он создаст файл журнала, содержащий оба журнала неудачных попыток.