Como rodar o log do meu aplicativo no Ubuntu?

0

Estou usando o Ubuntu Linux 14.04 Estou tendo problemas com a rotação de log. Eu tenho esse arquivo

rails@myapp:~$ ls -al myapp/log/production.log
-rw-r--r-- 1 rails rails 4522482443 Jun  5 12:11 myapp/log/production.log

e eu tenho isso no meu arquivo /etc/logrotate.conf,

/home/rails/myapp/log {
        daily
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 644 root root
}

mas meu log nunca é rotacionado. Eu sei disso porque posso ver entradas no arquivo "myapp / log / production.log" com data de 8 de maio. Todos os dias o log continua a ficar maior. O que mais eu preciso fazer para ter meu log rodado?

    
por Dave 05.06.2017 / 18:27

2 respostas

1

Primeiro, o mais provável é que você não esteja executando o logrotate automaticamente (geralmente através do daemon do cron).

Segundo, você especifica no seu arquivo de configuração logrotate que você quer girar o arquivo / home / rails / myapp / log, mas na saída ls você nos mostra o arquivo /home/rails/myapp/log/production.log ( Estou assumindo ~ rails - > / home / rails). E você também pede que o novo arquivo de log vazio seja criado pelo logrotate para ter o dono root: root, mas novamente na saída ls o arquivo original é propriedade de rails: rails.

TL; DR; use este arquivo de configuração (e certifique-se de que o logrotate seja executado pelo cron ou similar de tempos em tempos):

/home/rails/myapp/log/production.log {
        daily
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 644 rails rails
}

Observe também que você pode precisar usar o postrotate para reiniciar o aplicativo para forçá-lo a parar de gravar no descritor de arquivo que aponta para o arquivo girado.

    
por 10.06.2017 / 12:21
0

Tente isso.

/home/rails/myapp/log

{  
   su rails rails
   daily
   missingok
   compress
   notifempty
   rotate 12
   create
   delaycompress
   missingok
   }

Coloque-o em /etc/logrotate.d/myapp

Explanação muito pequena. O logroatate deve ser escrito em seu $ HOME, então a rotação para o seu myapp.log deve ser executada como rails.

su rails rails   

desculpe mais da manpage

su user group Rotate log files set under this user and group instead of using default user/group (usually root). user specifies the user name used for rotation and group specifies the group used for rotation. If the user/group you specify here does not have sufficient privilege to make files with the ownership you've specified in a create instruc‐ tion, it will cause an error.

create mode owner group, create owner group Immediately after rotation (before the postrotate script is run) the log file is created (with the same name as the log file just rotated). mode specifies the mode for the log file in octal (the same as chmod(2)), owner specifies the user name who will own the log file, and group specifies the group the log file will belong to. Any of the log file attributes may be omitted, in which case those attributes for the new file will use the same val‐ ues as the original log file for the omitted attributes. This option can be disabled using the nocreate option.

Desculpe, não sei explicar melhor em inglês.

    
por 09.06.2017 / 15:18