Log Upstart não está girando

1

Eu tenho um script upstart personalizado que gerencia um serviço de API do Node. Esse script canaliza a saída para /var/log/upstart/api-access.log . O que eu continuo vendo é que o log antigo é arquivado em api-access.log.1.gz , mas um novo arquivo api-access.log não é criado.

Alguma idéia de por que isso pode estar acontecendo ou o que posso fazer para corrigir?

A parte do script do meu arquivo upstart é assim:

script
  chdir /opt/www/api
  exec sudo -u www-data NODE_ENV=production npm start >> /var/log/upstart/api-access.log
end script
    
por Rob Wilkerson 11.04.2014 / 13:56

1 resposta

3

Quando /var/log/upstart/api-access.log é arquivado, o link do sistema de arquivos original para ele é removido, no entanto, o inode permanece como está sendo mantido pelo processo exec-ed. O processo continua a escrever para este inode mesmo quando não há referência a ele e continuará a fazê-lo até que o processo seja reiniciado.

A menos que você esteja redirecionando essa saída para esse arquivo, você deve evitar fazê-lo. O Upstart grava todas as saídas em um arquivo em / var / log / upstart, nomeado após o script upstart, de qualquer maneira. Ele também reabre o arquivo em cada gravação, para que o arquivo seja recriado, caso tenha sido removido pela rotação do registro.

Editar por JennyD: Se você deseja gravar em um arquivo, defina seu script de rotação de log para copiar e truncar em vez de mover o arquivo. Dessa forma, o identificador de arquivo original permanecerá disponível, mas o conteúdo será movido para um arquivo morto.

    
por 11.04.2014 / 14:51