Logfiles auswerten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Leonidas meint nur, das es egal ist, ob die gesammten Log-Daten in's Physikalische RAM passen, da das Betriebssystem per SWAP die Daten die gerade nicht mehr gebraucht werden vom RAM auf die Festplatte schreiben würde.
Ja, ich weiß, ich schreib manchmal umständlich. Danke jens.

Und den Benutzernamen kannst du mit .split('@') zerlegen.

Nun, vielleuicht bin ich etwas schwer von Begriff, aber ich verstehe nicht zum Schluss, was du machen musst. Also, du willst ein Logfile auswerten. Gut, an 10 Stelle muss "1012" stehen, oder können es auch andere Werte sein? Und zuletzt möchtest du das nach Benutzern in einzelne Dateien speichern?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
janni80

Hi,

ich gebe dir mal ein einfaches Beispiel um mein Problem zu verstehen
Wenn ich in Python folgenden Code ausführe erhalte ich folgendes Logfile-
Hier der Code nochmal:

Code: Alles auswählen

infile = file( "C:\\Documents and Settings\\jcourtis\\Desktop\\MailLog\\20050221.log", 'r')
outfile = file( "C:\\Documents and Settings\\jcourtis\\Desktop\\MailLog\\maillog.log", 'w')

for line in infile:
    if "1021" in line:
        outfile.write(line)

infile.close()
outfile.close()
und das logfile sieht dann so aus:

9:30 admin_1 1021
9:30 admin_2 1021
9:31 guest_1 1021
9:31 admin_2 1021
9:32 guest_1 1021
9:45 guest_2 1021
9:46 admin_1 1021

So jetzt gut aufpassen:-) ich will jetzt das die zweite Spalte ausgelesen wird, d.h. in Spalte 2 steht irgendein Benutzername, wie z.B. admin_1. Der kann aber wie gesagt variieren, deswegen möchte ich auch kein Dictionary erstellen(das wäre viel bei etwa 100 Benutzern). Was ich nun will ist, eine Filterung nach den Benutzernamen, sprich admin_1, admin_2 usw. und dies dann ins logfile abspeichern.
Verstehst du jetzt mein Problem?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Bei mir geht's...
Kann ich bezeugen *g*
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

janni80 hat geschrieben:So jetzt gut aufpassen:-) ich will jetzt das die zweite Spalte ausgelesen wird, d.h. in Spalte 2 steht irgendein Benutzername, wie z.B. admin_1. Der kann aber wie gesagt variieren, deswegen möchte ich auch kein Dictionary erstellen(das wäre viel bei etwa 100 Benutzern). Was ich nun will ist, eine Filterung nach den Benutzernamen, sprich admin_1, admin_2 usw. und dies dann ins logfile abspeichern.
Verstehst du jetzt mein Problem?
Ja, ich denke schon :)
Aber ich würde erstmal ein Dictionary machen, so nach dem Motto "Hauptsache es läuft, dann kann man immer noch verbessern."
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
janni80

na gut, ich wollte halt nicht die 100 Einträge in das Dictionary einpflegen, zumal das lange dauert und die Benutzernamen sich wöchentlich ändern.
Trotzdem vielen Dank für Zeit und Geduld.

Gruss Janni
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Nicht gleich den Sand in den Kopf stecken.

Ich hab das jetzt mal so gemacht:
unsort.log hat geschrieben:9:30 admin_1 1021
9:30 admin_2 1021
9:31 guest_1 1021
9:31 admin_2 1021
9:32 guest_1 1021
9:45 guest_2 1021
9:46 admin_1 1021

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-

def main():
    f = file('unsort.log', 'r')
    content = [line.rstrip() for line in f]
    f.close()
    
    data = {}
    
    for line in content:
        values = line.split()
        try:
            data[values[1]] += '\n' + line
        except KeyError:
            data[values[1]] = line
    
    for user in data.keys():
        f = file(user + '.log', 'w')
        f.write(data[user])
        f.close()
    

if __name__ == '__main__':
    main()
Suchst du sowas?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
janni80

genau das habe ich gesucht leonidas, vielen vielen dank
Antworten