logrotate giornalmente e le dimensioni?


40

Se viene specificata una configurazione logrotate con i parametri "size" e "daily", quale ha la precedenza? Dove è documentato? Vorrei che queste rotazioni avvenissero come un'operazione OR booleana, cioè se i registri hanno un giorno di vita vengono ruotati, O se sono più grandi di una certa dimensione verranno anche ruotati. Tuttavia, logrotate attualmente utilizza solo la direttiva "size" e sembra ignorare la direttiva "daily". Logrotate è impostato per l'esecuzione ogni ora. Il sistema operativo è derivati ​​Linux, Red Hat e Debian.

Inoltre, sto specificando prima "quotidianamente", quindi "dimensione" dall'inizio del file. Non sono sicuro se l'ordine conta, ma in ogni caso, bisogna prima arrivare nel file di configurazione ...

Grazie!



> le definizioni locali prevalgono su quelle globali e le definizioni successive> sovrascrivono quelle precedenti dalla manpage di logrotate 3.8.7
John Bob Joe

Risposte:


62

Se viene utilizzata la direttiva sulle dimensioni , logrotate ignorerà le direttive giornaliere , settimanali , mensili e annuali . Questo non è chiaro nella documentazione quando si esegue il man logrotatecomando. Tuttavia, può essere confermato in pratica ed è menzionato in alcuni post di blog arbitrari come questo .

Esiste una direttiva chiamata minsize che secondo la pagina man di logrotate è l'unica direttiva sulle dimensioni che può essere usata insieme a quelle temporali. Tuttavia, non è ancora quello che vuoi. L'uso di minsize con daily dice essenzialmente: ruota i log ogni giorno, ma solo quando hanno almeno # MB di dimensioni .

Fino ad oggi non ho trovato alcun modo con logrotate di fare la condizione richiesta: ruota ogni giorno, a meno che la dimensione non superi #MB, nel qual caso ruota immediatamente . Non penso che questo sia supportato usando solo le direttive logrotate. Potrebbe essere possibile avere a che fare con alcuni script intelligenti tramite le direttive hook script come prerotate , postrotate , firstaction e lastaction .

Aggiornamento :

A partire da logrotate 3.8.1, maxsizee timeperiodsono supportati insieme, che sarebbe la soluzione ideale. Vedere la risposta a questo post: Come ruotare il registro in base a un intervallo a meno che il registro non superi una determinata dimensione?


4
La migliore opzione sarebbe probabilmente quella di usare due comandi cron separati, eseguirlo per eseguirlo quotidianamente con la conf predefinita, e uno ogni x minuti che richiede una configurazione con solo i file che ti preoccupano di overflow usando la direttiva size e non il quotidiano.
SilverbackNet,

8
A partire da logrotate 3.81 maxsizee timeperiodsono supportati. Per serverfault.com/questions/474941/…
belacqua

1
@belacqua Sto usando 3.8.7 e timeperiod non è nell'uomo.
JorgeeFG,

La versione corretta è in realtà 3.8.1, non 3.81.
Tom Miller,

2

La prima risposta di @egg è, secondo le mie esperienze con logrotate, non vera!

Se giornaliero, mensile, ... viene prima e dopo tale direttiva di dimensioni , giornaliero, mensile, ... verrà ignorato e la direttiva di dimensione verrà applicata al file di registro.

Allo stesso modo, quando uso per la prima volta la direttiva sulle dimensioni, quindi le direttive giornaliere, settimanali, mensili e annuali , la direttiva sulle dimensioni verrà ignorata.


1

Se aggiungi Giornalmente, ruoterà ogni giorno anche se viene soddisfatta la condizione Dimensione. Se si aggiunge anche la condizione della dimensione, è possibile ottenere due rotazioni in un giorno a seconda di quanto sia dettagliata la registrazione.

Se Daily viene inserito per primo nello script, Dimensione potrebbe non attivarsi.


utilizzare l'opzione dettagliata per vedere quali regole vengono utilizzate. Dai miei test credo che sia usata solo l'ultima regola perché regole più specifiche possono prevalere su regole più generali.
Bram,

Altre rotazioni sono OK, poiché sarebbe il comportamento previsto. (OR booleano) Tuttavia, il mio problema è che queste rotazioni non si verificano. Sembra essere un bug (forse una caratteristica) del registro che ruota, poiché non riesco a vedere l'ordine delle direttive essere importante o documentato ovunque.
pantaloni per gatti,

puoi fare un esempio del tuo logrotate.conf e dei file che stai cercando di scegliere come target? Ogni giorno non ha una condizione diversa dalla progressione del tempo. La dimensione è condizionata.
Paul Hickox,

/tmp/output.log {dimensione giornaliera 1k rotazione 5}
pantaloni gatto

1
Questo file viene ruotato quando la dimensione è maggiore di 1k, ma è non è ruotato tutti i giorni come previsto e desiderato.
pantaloni gatto

1

In realtà, la mia pagina man su Red Hat sembra essere abbastanza chiara sulle differenze tra dimensioni e dimensioni minime:

dimensione minima

          Log  files  are rotated when they grow bigger then size bytes,
          but  not  before  the  additionally  specified  time  interval
          (daily,  weekly, monthly, or yearly).  The related size option
          is similar except that it is mutually exclusive with the  time
          interval  options, and it causes log files to be rotated with-
          out regard for the last rotation time.  When minsize is  used,
          both the size and timestamp of a log file are considered.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.