Como liberar dados automaticamente do arquivo de log de propriedade do syslog?

1

Estou executando o Go binary como um serviço e criei um arquivo de log de propriedade do syslog para manter todos os logs.

Este é o meu arquivo de serviço ::

[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

Depois de usar o rsyslog para gerenciar syslogs, criei um arquivo dentro do /etc/rsyslog.d/myapp.conf com o seguinte conteúdo:

if $programname == 'myapp' then /var/log/myapp/myapp.log
& stop

Depois disso, reiniciei o serviço. Ele cria um arquivo de log para mim. Eu tenho duas perguntas sobre o arquivo de log, da seguinte forma:

  1. Agora preciso liberar todos os dados do arquivo de log a cada 15 dias. Existe qualquer método para fazer isso ??
  2. Há alguma API que dará resposta a cada 3 minutos, então Existe alguma maneira de restringir alguma API de gerar logs?

Eu estou fazendo tudo isso usando o systemd. Por favor, sugira-me se houver um método para criar este tipo de arquivo de log anexado ao serviço systemd.

    
por Archana 21.09.2018 / 09:59

1 resposta

1

  1. Para liberar esse log, você pode usar o logrotate padrão, com o recarregamento do rsyslog no script postrotate. página do manual
  2. Como você pode ver. O Systemd grava toda a saída padrão no syslog, portanto, filtrar qual api deve ou não ir para o stdout deve ser feita dentro do aplicativo.
por 21.09.2018 / 10:46

Tags