sql >> Databasteknik >  >> RDS >> Oracle

Logga rotera för att rensa upp datumstämplade filer

Logrotate tar bort filer enligt ordning i lexikalt sorterad lista över roterade loggfilnamn, och även efter filålder (med den senaste ändringstiden för filen)

  • rotera är maximalt antal roterade filer, kan du hitta. Om det finns ett högre antal roterade loggfiler, sorteras deras namn lexikalt och de lexikalt minsta tas bort.

  • maxage definierar ett annat kriterium för att ta bort roterade loggfiler. Alla roterade loggfiler som är äldre än det angivna antalet dagar tas bort. Observera att datumet detekteras från filens senaste ändringstid, inte från filnamnet.

  • datumformat tillåter specifik formatering för datum i roterade filer. Man page noterar att formatet ska resultera i lexikalt korrekt sortering .

  • datum igår tillåter användning av datum i loggfilnamn en dag tillbaka.

För att behålla ett givet antal dagar i dagliga roterade filer (t.ex. 7), måste du ställa in rotate till värdet 7 och du kan ignorera maxage , om dina filer skapas och roteras verkligen varje dag.

Om loggskapandet inte sker på ett par dagar, t.ex. i 14 dagar kommer antalet roterade loggfiler att vara detsamma (7).

maxage kommer att förbättra situationen i "loggar inte producerade" scenarier genom att alltid ta bort för gamla filer. Efter 7 dagar utan loggproduktion kommer det inte att finnas några roterade loggfiler.

Du kan inte använda dateformat som OP visar, eftersom det inte är lexikalt sorterbart. Bråkar med dateformat skulle förmodligen resultera i att andra roterade loggfiler tas bort än du egentligen ville.

Tips :Kör logrotate från kommandoraden med -d alternativ för att utföra en torrkörning:du kommer att se vad logrotate skulle göra men faktiskt inte gör någonting. Utför sedan en manuell körning med -v (verbose) så att du kan bekräfta att det som görs är vad du vill.

Lösning:rengör loggar skapade av cron

Konceptet är:

Låt cron skapa och uppdatera loggfilerna, men gör små ändringar för att skapa filer, följ logrotate standardfilnamn när du använder standard dateext

/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log

Använd endast logrotate för att ta bort för gamla loggfiler

  • sikta på en inte befintlig loggfil /data/tier2/scripts/logs/recover_standby_SID.log
  • använd missingok för att låta logroterande rensning ske
  • ställ in rotate tillräckligt hög för att täcka antalet loggfiler som ska behållas (minst 7, om det kommer att finnas en "roterad" loggfil om dagen, men du kan säkert ställa in den väldigt högt som 9999)
  • ställ in maxage till 7. Detta kommer att ta bort filer som har senaste ändringstid längre än 7 dagar.
  • dateext används bara för att säkerställa, logrotera sökningar efter äldre filer som ser ut som roterade.

Logrotate-konfigurationsfilen skulle se ut så här:

data/tier2/scripts/logs/recover_standby_SID.log {
    daily
    missingok
    rotate 9999
    maxage 7
    dateext
}

Lösning:rotera direkt genom att logrotera en gång om dagen

Jag är inte säker på hur en standbyfil för källåterställning skapas, men jag antar att Oracle eller något av ditt skript regelbundet eller kontinuerligt läggs till i en fil /data/tier2/scripts/logs/recover_standby_SID.log

Konceptet är:

  • rotera filen en gång om dagen med logrotate
  • arbetar direkt med loggfilen som innehåller återställningsdata /data/tier2/scripts/logs/recover_standby_SID.log
  • daily kommer att orsaka rotation en gång om dagen (i termer av hur cron). förstår daily )
  • rotate måste ställas in på 7 (eller något högre nummer).
  • maxage inställd på 7 (dagar)
  • dateext för att använda standardsuffixet för logrotera datum
  • dateyesterday används för att orsaka datumsuffix i roterade filer som ligger en dag tillbaka.
  • missingok för att rensa äldre filer även när det inte finns något nytt innehåll att rotera.

Logrotate config skulle se ut så här:

data/tier2/scripts/logs/recover_standby_SID.log {
    daily
    missingok
    rotate 7
    maxage 7
    dateext
    dateyesterday
}

Observera att du kan behöva leka lite med copytruncate och andra liknande alternativ som är relaterade till hur källloggfilen skapas av extern process och hur den reagerar på rotationshandlingen.



  1. Kan Visual Studio Express 2008 ansluta till MySQL?

  2. Hur man konverterar mysql till laravel query builder

  3. Fråga efter en Oracle-databas med dynamiska tabellnamn

  4. Looping cursor kastar fel att markören inte är definierad