Como posso conectar a saída padrão e o erro de um serviço systemd a um arquivo com uma data no caminho?

Como posso conectar a saída padrão e o erro de um serviço systemd a um arquivo com uma data no caminho?

Eu gostaria de executar um processo de servidor no systemd e anexar sua saída padrão e erro a um arquivo, onde o caminho do arquivo contém uma data, assim:

/initech/logs/tps-report-app/sales/2023/09/11/console.log

Idealmente, eu gostaria que esse caminho rolasse automaticamente quando a data mudar, mas não será o fim do mundo se isso não acontecer, já que reiniciamos nossos servidores durante a noite de qualquer maneira.

Uma coisa que não quero fazer é a rotação de log tradicional, em que a saída é gravada em um arquivo com um caminho fixo e depois girada para um arquivo com um caminho datado posteriormente.

OOpção de configuração StandardOutputpermite-me anexar a saída a um arquivo usando append:path, mas não há menção à substituição de variável nessa string, então presumo que ela precise ser corrigida. Existe alguma maneira de incorporar a data nesse caminho?

Se não, qual é a melhor abordagem aqui? Conectar a saída por meio de um pipe nomeado ou algo assim a um daemon de log como o multilog? Existe algo no 'kit de ferramentas' do systemd assim? Envolva o processo do servidor com um tipo de script de carregador de cadeia que redireciona a saída padrão e o erro? Algo mais?

Responder1

Você poderia, por exemplo, rolar os logs diariamente com logrotate. Em vez de usar, StandardOutputvocê pode dizer ao seu software para enviar logs para /path/$( Something-bashy aqui)/console.log e como parte da postrotatecriação do caminho e, em seguida, reiniciar o serviço em questão.

Editar: acabei de notar que você mencionou que os servidores são reiniciados todas as noites. Então sua única preocupação é garantir que o caminho do arquivo de log exista. Nesse caso, eu incorporaria a criação do caminho do arquivo de log no arquivo ExecStart. Algo como

ExecStart=/bin/bash -ac \
  "mkdir /my/path -p && run_app.sh"

informação relacionada