Logrotate für Windows
Das Problem:
Auf einem Windows Server erzeugt eine Software diverse Logfiles. Ab einer Größe über 10 MB bekommt der Systembetreuer eine Mail, dass die Datei zu groß wird. Dieses Logfile hat aber nur informativen Charakter und muss nicht aufgehoben werden.
Daher kann man es im Prinzip auf einfach löschen und neu erstellen.
Die Lösung wäre unter Linux einfach : Logrotate
Nach etwas Sucherei bin ich zunächst auf logwot8 gestoßen.
Was mich an diesem Tool allerdings stört ist, dass man da im Hintergrund ein Cygwin laufen hat. Ist mir für ein paar Logfiles zu viel Overkill 🙂
Umgesetzt habe ich das Ganze dann mit LogRotateWin.
Beschreibung:
„Eine Windows Implementierung des logrotate Tools, welches es auf Linux Platformen gibt. Das Ziel ist es die gleichen Kommandozeilenparameter wie die Linux Version zu verwenden.“
Für die Parameter schaut man am besten ins Wiki
Ich habe das bei uns jetzt so umgesetzt:
1. Download Logrotate
https://sourceforge.net/projects/logrotatewin/
https://sourceforge.net/p/logrotatewin/wiki/LogRotate/
2. Installation auf einen anderen PC – wir brauchen auf dem Server nur den Programmordner Logrotate, der unter C:\Program Files (x86) erstellt wird.
Deswegen führe ich die Installation auf einem anderen Rechner durch und kopiere das Verzeichnis.
Beim Test gab es Probleme mit den Berechtigungen, wenn das Programm unter C:\Program Files (x86)\LogRotate ausgeführt wird.
Ggfs. kann man das auch mit einem Tool extrahieren.
3. Auf dem Server das Feature .NET Framework 3.5 installieren, falls das nicht schon drauf ist.
4. Den gesamten Ordner „Logrotate“ nach „D:“ kopieren (bei diesem Server habe ich das mal auf D: gemacht).
5. Ein leeres Textfile mit dem Namen logrotate.status (ohne .txt !) anlegen. Und zwar direkt im Stammverzeichnis. Bei mir also D:\logrotate.status
6. Im Verzeichnis Logrotate\Content ein conf-File (z.B. schedule.conf) für das Logfile anlegen.
Inhalt der schedule.conf:
##########################
D:\Anwendungsname\logs\schedule.log {
rotate 5
size 10M
}
#########################
Erklärung:
Bei einer Größe von 10MB wird das Logfile gepackt und umbenannt nach „schedule.log.1.gz“
Das Ganze wird dann für 5 Versionen vorgehalten und dann wieder überschrieben.
7. In der Aufgabenplanung (Task Scheduler) einen neuen Job anlegen
Name: logrotate-schedule
Triggers: Daily 06:00
Actions: Start a program D:\LogRotate\logrotate.exe D:\LogRotate\Content\schedule.conf
Conditions:
Settings:
Besonderheiten für den Task:
„Run whether user is logged on or not“ und „Run with highest privileges“
Jetzt kümmert sich das System selbst um die Logs 🙂
Bevor man das Ganze in der Aufgabenplanung laufen lässt, sollte man das mal in der CMD (als Administrator) ausprobieren und schauen, ob man Fehlermeldungen sieht.