Logrotate está apagando meus logs

0

Eu tenho essa configuração de logrotate que não é em /etc/logrotate.d

/path/to/my/logfile.log {
    su root root
    daily
    maxage 365000
    copytruncate
    dateext
    dateformat -%d.%m.%Y
}

Eu executo o crontab:

59 23 * * * root logrotate /path/to/my/logrotate/config > /some/logfile

Todos os dias posso ver apenas dois arquivos de log, o logfile.log truncado e um novo arquivo logfile.log-DD-MM-YYYY. Todos os registros mais antigos são excluídos.

Todos os dias, copio o novo arquivo girado e atribuo-lhe um novo nome; no dia seguinte, os registros do dia anterior desaparecem. Como posso consertar isso?

    
por Andrija Čehko 03.05.2017 / 16:23

2 respostas

1

Você precisa da seguinte linha em sua configuração:

rotate <count>

Substitua <count> pelo número de vezes que você deseja que o log seja girado antes de remover o registro girado mais antigo. Então cinco vezes seria:

/path/to/my/logfile.log {
    su root root
    daily
    maxage 365000
    copytruncate
    dateext
    dateformat -%d.%m.%Y
    rotate 5
}

Você pode verificar sua página logrotate man para mais informações.

    
por TopHat 03.05.2017 / 16:51
1

Você não usou a diretiva rotate para especificar quantas rotações de log deseja manter, ou seja, quantas rotações fazer. Se não for mencionado, o valor padrão do parâmetro é 0 .

De config.c de logrotate source, verifique rotateCount :

int readAllConfigPaths(const char **paths)
{
    int i, result = 0;
    const char **file;
    struct logInfo defConfig = {
                .pattern = NULL,
                .files = NULL,
                .numFiles = 0,
                .oldDir = NULL,
                .criterium = ROT_SIZE,
                .threshhold = 1024 * 1024,
                .minsize = 0,
                .maxsize = 0,
                .rotateCount = 0,
                ...
                <truncated>

Um valor de 0 para rotate fará logrotate remover versões antigas do log, em vez de girar. Isso está acontecendo no seu caso.

Portanto, use um valor sane para a diretiva rotate para atender sua necessidade. Por exemplo, um valor de 7 faria 7 rotações. Se os logs forem grandes, veja compress também.

    
por heemayl 03.05.2017 / 16:51