Hoi Leden
Ik ben op zoek naar een manier om logfiles custom te renamen en te compressen.
Op een debian server met logrotate staat nu in /etc/logrotate.d/apache:
En dus staat er na een tijdje dit in mijn logdir:
access.log
access.log.0
access.log.1.gz
access.log.2.gz
enz.
Dat wil je dus niet want de files worden allemaal gerenamed access.log.2.gz is dus een andere file bij de volgende logrotate actie
Wat je eigenlijk wilt is na een paar maanden zoiets:
access.log
access.log.July-2003.bz2
access.log.June-2003.bz2
access.log.May-2003.bz2
enz
Anyway ik had dus iets in elkaar geflanst wat er zo uit ziet:
Dit werkt perfect
MAAR!
Zoals je ziet moet je bij deze actie iedere logfile expliciet aangeven. Das dus niet fijn als je mad veel logfiles hebt
Waar ik nu naar op zoek ben is een manier waarop je in het begin een wildcard opgeeft (a la het eerste script -> /var/log/apache/*.log), en dan vervolgens bij postrotate een soort foreach-achtig ding gebruikt om alle files uit de wildcard doorheen te halen....
Of moet ik in postrotate gewoon dan maar een shell scrippie zetten met foreach?
Dat kan natuurlijk ook.
Ohja met deze aanpak weet logrotate niet meer hoeveel hij er moet laten staan omdat je zelf de file renamed -> niet echt een probleem als je iedere paar maanden die files er vanaf haalt en op CD zet ofzo.
Vindt het nl. wel fijn als je die save hebt kun je later nog een keer iets terugzoeken...
Heeft niemand zich hier eerder aan gestoord trouwens volgens mij heb ik deze feature zelfs een keer gezien op een Win32 server
Ik ben op zoek naar een manier om logfiles custom te renamen en te compressen.
Op een debian server met logrotate staat nu in /etc/logrotate.d/apache:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| /var/log/apache/*.log {
monthly
missingok
rotate 48
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache reload > /dev/null
endscript
} |
En dus staat er na een tijdje dit in mijn logdir:
access.log
access.log.0
access.log.1.gz
access.log.2.gz
enz.
Dat wil je dus niet want de files worden allemaal gerenamed access.log.2.gz is dus een andere file bij de volgende logrotate actie
Wat je eigenlijk wilt is na een paar maanden zoiets:
access.log
access.log.July-2003.bz2
access.log.June-2003.bz2
access.log.May-2003.bz2
enz
Anyway ik had dus iets in elkaar geflanst wat er zo uit ziet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| /var/log/apache/error.log {
daily
missingok
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache reload > /dev/null
bzip2 /var/log/apache/error.log.1
mv /var/log/apache/error.log.1.bz2 /var/log/apache/error.`date +%d-%m-%Y-%T`.bz2
endscript
} |
Dit werkt perfect
MAAR!
Zoals je ziet moet je bij deze actie iedere logfile expliciet aangeven. Das dus niet fijn als je mad veel logfiles hebt
Waar ik nu naar op zoek ben is een manier waarop je in het begin een wildcard opgeeft (a la het eerste script -> /var/log/apache/*.log), en dan vervolgens bij postrotate een soort foreach-achtig ding gebruikt om alle files uit de wildcard doorheen te halen....
Of moet ik in postrotate gewoon dan maar een shell scrippie zetten met foreach?
Dat kan natuurlijk ook.
Ohja met deze aanpak weet logrotate niet meer hoeveel hij er moet laten staan omdat je zelf de file renamed -> niet echt een probleem als je iedere paar maanden die files er vanaf haalt en op CD zet ofzo.
Vindt het nl. wel fijn als je die save hebt kun je later nog een keer iets terugzoeken...
Heeft niemand zich hier eerder aan gestoord trouwens volgens mij heb ik deze feature zelfs een keer gezien op een Win32 server