Como faço para que uma unidade do systemd redirecione ou copie os logs para o syslog?

1

Estou executando o Ubuntu 16.04 Server com um serviço node.js, no qual preciso gravar o log em um arquivo, assim como o bom e velho syslog:)

Eu estive pesquisando metade da noite, mas nada apareceu.

O motivo por trás dessa necessidade estranha é que estamos coletando os logs via filebeat e enviando-os para um cluster do ElasticSearch.

    
por Nicky Larstrup 07.07.2017 / 02:35

1 resposta

1

Encontrei uma solução alternativa usando o systemd para executar o journalctl imediatamente após iniciar o serviço do qual preciso obter um log.

Adicione um script de serviço do systemd para criar um arquivo de log para "MyService"   /etc/systemd/system/multi-user.target.wants/MyService-journalctl-to-log.service :

[Unit]
Description=MyService journalctl parser to filebeat
#I needed to get a log file for filebeat to read
#Wants=filebeat.service
#After=filebeat.service

[Service]
Restart=always
RestartSec=5
ExecStart=/bin/sh -c '/bin/journalctl --no-tail -f -u MyService.service  > /var/log/MyService.log 2>&1'
ExecStartPre=/bin/journalctl --vacuum-size=10M

[Install]
WantedBy=multi-user.target

Ativar e iniciar o novo serviço systemd

systemctl enable MyService-journalctl-to-log.service
systemctl start MyService-journalctl-to-log.service
    
por Nicky Larstrup 12.10.2017 / 09:24