Systemd imprime logs em um arquivo de log externo

3

Eu tenho o seguinte script de serviço Systemd para executar um aplicativo de inicialização Spring -

[Unit]
Description=Upstart for Security
After=network.target network-online.target
Wants=network-online.target

[Service]
User=root
WorkingDirectory=/home/ubuntu/security
ExecStart=/usr/bin/java -classpath java -Dspring.profiles.active=stage -jar /home/ubuntu/security/security-0.0.1-SNAPSHOT.jar > /home/ubuntu/security/security.log 2>&1
SuccessExitStatus=143
Restart=always
RestartSec=120s

[Install]
WantedBy=multi-user.target


Salve o script no seguinte local -

 /etc/systemd/system


Eu executei os seguintes comandos para executar o script de serviço systemd -

1. sudo systemctl enable security.service -or- sudo systemctl daemon-reload
2. sudo systemctl status security.service 
3. sudo systemctl start security.service


Para verificar logs, eu disparo o comando -

journalctl -u security.service

e use SHIFT+G para rolar para eof

Eu posso verificar os registros pelas etapas acima, mas eu os quero em um arquivo externo na localização / home / ubuntu / security , como security.log
Como posso conseguir isso? Que alteração eu faço no meu script systemd?

    
por Aniruddha Raje 27.04.2017 / 19:24

1 resposta

3

O systemd já fornece um log personalizado para você, por padrão, no diário do systemd. Ele automaticamente redireciona tanto o STDIN quanto o STDOUT, além de manipular o crescimento e a rotação do arquivo de log.

Apenas deixe o redirecionamento do arquivo de log fora da sua linha ExecStart= . Para visualizar os logs gerados pelo seu serviço, use journalctl -u security .

Consulte man journald.conf para opções de configuração relacionadas e man journalctl para obter mais opções para visualizar e consultar os dados do registro.

Os documentos em man systemd.service explicam que a sintaxe de redirecionamento não é suportada na linha ExecStart= :

% bl0ck_qu0te%     
por Mark Stosberg 27.04.2017 / 21:54