Как создать файл журнала сбоев, принадлежащий syslog, во время работы службы systemd?

Я использую двоичный код 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

. Она покажет все журналы внутри терминала. У меня следующие вопросы ::

  1. как я могу создать файл журнала, в котором будут храниться все журналы (внутри /var/log/myapp/myapp.log).
  2. И я также хочу классифицировать журналы, как будто я просто хочу поддерживать Только журналы сбоев, поэтому после создания файла журнала, как писать журналы сбоев внутри myapp.log. На данный момент он показал все журналы (оба успешных отказа) внутри терминала.
  3. Я нажимаю golang api на порт 8080, но всякий раз, когда я проверял порт, не кажется занятым. Я не понял, почему порт 8080 не занят, когда я запускаю его как службу. Хотя он дает ответ в обоих случаях, но после остановки службы и при запуске приложения на переднем плане он показывает, что порт 8080 занят. Есть ли для этого какая-то причина?
-1
задан 20 September 2018 в 07:32
1 ответ

Если вы используете 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

Но он создаст файл журнала, содержащий оба журнала неудачных попыток.

0
ответ дан 5 December 2019 в 20:20

Теги

Похожие вопросы