kaktus
Goto Top

Logbuch.txt Datei auf 100 Zeilen beschränken, Rest nach Logbuchalt.txt

Hallo Forum

Ich habe eine Logbuchdatei namens Logbuch.txt , wo ständig neue Zeilen eingetragen werden.

Beispiel:
2010-07-01 17:40:50 Disconnect DB0FS-R Peer requested disconnect

Diese Datei wird immer größer und braucht entsprechend lange wenn sie über das Internet aufgerufen wird.
Deshalb würde ich diese Datei gerne auf 100 Zeilen begrenzen und den Rest an die Datei Logbuchalt.txt unten anhängen.

Ich habe das Forum durchsucht, konnte aber keine Lösung finden.

Content-Key: 146081

Url: https://administrator.de/contentid/146081

Printed on: April 19, 2024 at 19:04 o'clock

Member: bastla
bastla Jul 01, 2010 at 18:28:57 (UTC)
Goto Top
Hallo kaktus und willkommen im Forum!

Werden die neuen Zeilen am Anfang oder am Ende der Datei hinzugefügt, oder, anders gefragt, willst Du die ersten 100 oder die letzten 100 Zeilen behalten?
Außerdem: In welchen Zeitabständen kommen die neuen Zeilen hinzu?

Grüße
bastla
Member: kaktus
kaktus Jul 01, 2010 at 18:36:22 (UTC)
Goto Top
Hallo bastla
Die neuen Zeilen werden an das Ende angehängt.
Behalten würde ich gerne die letzten 100 Zeilen.

Alternativ, aber viel komplizierter wären die heutigen und die gestrigen Einträge.

Danke für dein Interesse !
Member: bastla
bastla Jul 01, 2010 at 18:41:59 (UTC)
Goto Top
Hallo kaktus!
Alternativ, aber viel komplizierter wären die heutigen und die gestrigen Einträge.
... im Sinne von: Behalte die heutigen Einträge und füge alle nicht von heute stammenden Einträge der "Logbuchalt.txt" hinzu?

Grüße
bastla
Member: kaktus
kaktus Jul 01, 2010 at 18:45:46 (UTC)
Goto Top
Ja, fast.

Behalte die Einträge von heute und gestern, verschiebe den Rest nach Lobuchalt.txt

Wie gesagt, das wäre die komplizierte Variante, die letzten 100 Einträge wären auch ok.
Member: Biber
Biber Jul 01, 2010 at 18:57:27 (UTC)
Goto Top
Moin kaktus,

willkommen im Forum.

Nur zur Sicherheit:
  • du betreibst nicht zufällig deinen "über der Internet erreichbar"-Krams auf einem Betriebssystem, das von Haus aus das Kommando "tail" kennt?
  • wer/was greift denn auf diese "Logbuch.txt" zu und muss der/dasjenige wirklich auf eine -physisch vorhandene- Datei zugreifen?

P.S.
--> Generell würde ich nie nicht auf Logeinträge verzichten, bevor die nicht auf CD gebrannt sind und von daher unabhängig von diesem "nur heute und gestern anzeigen"-Problem eine sinnvolle Portionierung vornehmen.

Heißt:- ein Logfile pro Tag oder pro Woche oder pro Monat und aktiv und auf dem Rechner dann bestenfalls die letzten x Tage - Rest irgendwo archiviert.

Grüße
Biber
Member: bastla
bastla Jul 01, 2010 at 18:59:56 (UTC)
Goto Top
Hallo kaktus!

Soferne Du nix gegen ein ganz klein wenig VBScript einzuwenden hast (erzeugt der Batch eh selber), dann etwa so:
@echo off & setlocal
set "Aktuell=D:\Logbuch.txt"  
set "Archiv=D:\Logbuchalt.txt"  

set "LogTemp=%temp%\Logbuch.txt"  
set "G=%temp%\GetYesterday.vbs"  
>"%G%" echo WScript.Echo DateAdd("d",-1,WScript.Arguments(0))  

for /f "tokens=1-3 delims=." %%a in ("%date%") do set "Heute=%%c-%%b-%%a"  
for /f "tokens=1-3 delims=." %%a in ('cscript //nologo "%G%" %Heute%') do set "Gestern=%%c-%%b-%%a"  

move "%Aktuell%" "%LogTemp%"  
findstr /b "%Gestern%" "%LogTemp%">"%Aktuell%"  
findstr /b "%Heute%" "%LogTemp%">>"%Aktuell%"  
findstr /b /v "%Gestern% %Heute%" "%LogTemp%">>"%Archiv%"  
Die "Logbuch.txt" bleibt als Sicherungskopie in "%temp%\Logbuch.txt" ...

Grüße
bastla

[Edit] Die Kombination der Zeilen 13 und 14 zu
findstr /b "%Gestern% %Heute%" "%LogTemp%">"%Aktuell%"
sollte eigentlich auch reichen (die Reihenfolge müsste ja schon passen) ...
[/Edit]
Member: kaktus
kaktus Jul 01, 2010 at 19:20:29 (UTC)
Goto Top
@bastla

Kniefall !

es funktioniert genauso wie ich mir das vorstelle. Und das hast du in der kurzen Zeit gelöst.

Ich sage vielen Dank !
Member: kaktus
kaktus Jul 01, 2010 at 19:23:10 (UTC)
Goto Top
Hi Biber !

Die Logbuchdatei wird per ftp auf einen Webserver gespielt wo sie dann von bestimmten Usern erreichbar ist. Es ist nix super wichtiges, nur Hobby

Bastla hat mir eine Lösung präsentiert, danke für dein Interesse.