Eu tenho um serviço específico, que registra informações raras, mas importantes. Eu o configurei há alguns meses e hoje corri journalctl -n 50 --unit=my-service
apenas para descobrir que não há entradas.
Estou perfeitamente feliz com esse comportamento na maioria das unidades - ou preciso de algo que aconteceu imediatamente (ou há alguns dias, no máximo) e não me importo com registros de meses.
No entanto, existe uma maneira de dizer journald
para ter uma política de armazenamento e retenção independente para os registros de uma única unidade específica? Quero persistir esses logs específicos por, digamos, 5 anos - não importa o tamanho necessário. Os logs das outras unidades não devem ser afetados por isso e mantêm o comportamento existente.
Estou meio que perdendo o entendimento journald.conf(5)
e não consigo descobrir sempre que é possível configurar por unidade. Se for - apreciaria um breve exemplo concreto - qual arquivo devo editar / criar e o que devo escrever. Ou, se você tiver certeza de que certamente não é viável - essa também seria uma boa resposta.
NOTA: Meu caso específico envolve o host do Arch Linux, mas acho que isso não deve importar muito.
fonte
Respostas:
Parece que provavelmente estou sem sorte com o journald. A menos que eu descubra uma maneira de gerar um diário independente de "armazenamento de longo prazo" (como atualmente existem diferentes diários por usuário), mas não tenho certeza de que seja uma abordagem viável e sensata. Eu acho que configurar um syslogd (e logrotate) seria mais fácil.
O recurso não estava presente no final de 2014 , como confirmado pelo próprio Lennart.
E parece que ainda não está aqui. Pelo menos, a linha "journald: permita tempos de retenção por prioridade e por serviço ao girar / aspirar" ainda está no arquivo TODO (link para revisão de 11/07/2016).
fonte
É extremamente simples gerar o arquivo de log. Por padrão, todo o registro no journald também é enviado para o syslog e esse padrão precisa estar em vigor. O rsyslog.conf controla como as entradas passadas para o syslog são tratadas. Além disso, os
SyslogFacility
padrões paradaemon
assim as entradas de log para qualquer serviço geralmente acabam nodaemon.log
arquivo em/var/log
.No seu arquivo de serviço, adicione à seção [service]
(o número pode estar entre 0 e 7) https://www.freedesktop.org/software/systemd/man/systemd.exec.html
Modifique o /etc/rsyslog.conf (encontre as linhas existentes a serem modificadas) para que o local2 seja registrado em um arquivo específico (primeira linha) e, idealmente, não seja registrado no syslog, adicionando
local2.none
como mostrado (ele já está no diário).[editar] você também precisa alterar todas as capturas
É claro que a retenção real precisa ser feita por logrotate.
HTH
fonte