logrotate renomeia arquivos com data

7

Neste momento, logrotate renomeia arquivos de log antigos para access.log.1.gz, access.log.2.gz, etc. Eu preferiria que os nomeasse access.log.20090714.gz, access.log.20090715.gz, etc - um para cada dia.

Não consigo encontrar nenhuma opção para especificar um padrão de nome de arquivo para os arquivos de log antigos. Você sabe como fazer isso?

BTW, isso é para girar arquivos de log lighttpd, se isso importa.

    
por Krystian Cybulski 16.07.2009 / 02:40

3 respostas

14

Em /etc/logrotate.conf ou /etc/logrotate.d/lighttpd , ou o arquivo correto, se houver outro lugar, adicione dateext à estrofe na qual você deseja aplicar sufixos de data.

Mais informações em página de manual do logrotate :

dateext

Archive old versions of log files adding a daily extension like YYYYMMDD instead of simply adding a number.

    
por 16.07.2009 / 03:07
2

Use cronolog - ele irá gravar arquivos de log com os nomes de arquivos corretos em primeiro lugar (por exemplo, eu geralmente faço com que meus servidores criem arquivos de log como AAAA / MM / DD / acesso, ou AAAA / MM / DD / erro e assim por diante ). Mais detalhes sobre a configuração do cronolog com o lighttpd estão aqui: link

(enquanto essa página menciona que server.errorlog não pode ser executado através do cronolog, parece haver um relatório de bug para isso que foi marcado como "fixed" - infelizmente eu não posso postar mais de um URL em um tempo, desde que eu sou um "novo" usuário no serverfault ...)

    
por 16.07.2009 / 02:48
0

Eu não acho que lighttpd ou logrotate possam fazer isso sozinhos. Eu vejo duas opções para conseguir isso:

Faça seus próprios scripts diretamente após o logrotate, como no final do cronjob. Algo como:

if [ -f /var/log/lighttpd/access.log.1.gz ]; then'
    mv /var/log/lighttpd/access.log.1.gz /var/log/lighttpd/access.log.$date.gz
fi

Ou, o syslog-ng pode construir arquivos de log por data, e o lighttpd pode enviar logs para o syslog em vez de escrevê-los.

# syslog-ng.conf
destination df_lighttpd { file("/var/log/lighttpd/$YEAR$MONTH$DAY.log"); };
filter f_lighttpd { program("lighttpd"); };
log { source(s_all);  filter(f_lighttpd); destination(df_lighttpd); };

e defina accesslog.use-syslog & server.errorlog-use-syslog no lighttpd conf.

Editar: Cronolog é mais simples e / ou do que qualquer uma das minhas sugestões, eu concordaria com isso se funcionasse para você.

    
por 16.07.2009 / 02:47