haegar75
Goto Top

Umlaufendes Logfile herunterladen und fortschreiben

Hallo,
ich brauche mal wieder Hilfe.. Ich habe eine Reihe umlaufender Logfiles die über http herunterladbar sind. Um nun keine Informationen zu verlieren wenn zu viele neue Einträge reinkommen, möchte ich die Logfiles zyklisch herunterladen und in lokale Textdateien abspeichern. Allerdings möchte ich die "Momentaufnahmen" nicht einfach hintereinanderklatschen, sondern nur die neuen Zeilen hintendranhängen. Hat schon jemand sowas gemacht und ne Idee für mich? Kann gerne auch ne Batch-Lösung sein..
Vielen Dank im voraus.
Gruß Haegar

Content-Key: 155285

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

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: bastla
bastla 17.11.2010 um 22:51:44 Uhr
Goto Top
Hallo Haegar75!

Zum Herunterladen kannst Du "wget" oder zB
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")  
Http.Open "GET", "http://Log-File-URL", False  
Http.Send
LogText = Http.ResponseText
verwenden.
Die Weiterverarbeitung ist mir dann nicht ganz klar - könntest Du das noch etwas konkretisieren und auch zB den Umfang der Logfiles (Zeilenanzahl, Dateigröße) angeben?

Grüße
bastla
Mitglied: Haegar75
Haegar75 18.11.2010 um 19:13:27 Uhr
Goto Top
Danke! Mit wget konnte ich die Files schonmal einwandfrei herunterladen. Die Logfiles sind ca. 5-6kb groß.. Wenn ich die Files alle 3-4min herunterlade, sind je nachdem 2-30 Zeilen dazugekommen und die älteren Zeilen fehlen (umlaufend also..) Da oft identische Zeilen vorkommen kann ich nicht nach gleichen Zeilen im alten und neuen Logfile suchen und ab da aus dem neuen ans Ende des alten Files hängen. Ich bräuchte ne Mustererkennung oder so ähnlich um z.B. bei einer Übereinstimmung von ca. 10 Zeilen eine "Synchronisation" machen zu können. Sowas ähnliches wie der diff-Befehl unter Linux...
Mitglied: bastla
bastla 18.11.2010 um 19:31:52 Uhr
Goto Top
Hallo Haegar75!

Meine Frage nach dem Umfang bezog sich auf die Möglichkeit, den gesamten Inhalt (bzw dessen größten Teil) in eine Variable (und damit den Arbeitsspeicher zu holen) - dann könnte nach diesem "Block" in der nächsten Datei gesucht und nur der darauf folgende Teil hinzugefügt werden - schematisch (und völlig ungetestet) also etwa (ausgehend davon, dass die heruntergeladenen Dateien als "Vorletzte.txt" und "Letzte.txt" gespeichert sind und die Zusammenfassung in "Gesamt.txt" erfolgen soll) so:
Set fso = CreateObject("Scripting.FileSystemObject")  
InhaltVorletzte = fso.OpenTextFile("D:\Vorletzte.txt").ReadAll  
InhaltLetzte = fso.OpenTextFile("D:\Letzte.txt").ReadAll  

TeilAlt = Mid(InhaltVorletzte, 2001) 'erste 2000 Zeichen überspringen - sollten alle in der neuen Datei weggefallenen Zeilen enthalten  
Pos = InStr(InhaltLetzte, TeilAlt)
If Pos > 0 Then
    TeilNeu = Right(InhaltLetzte, Len(InhaltLetzte) - Pos - Len(TeilAlt))
    fso.OpenTextFile("D:\Gesamt.txt", 8, True).Write TeilNeu  
End If
Danach die Datei "D:\Vorletzte.txt" durch "D:\Letzte.txt" ersetzen und "D:\Letzte.txt" neu herunterladen.

Grüße
bastla