Seite 1 von 2

Verfasst: Dienstag 7. Juni 2005, 13:52
von Leonidas
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?

Verfasst: Dienstag 7. Juni 2005, 14:12
von 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?

Verfasst: Dienstag 7. Juni 2005, 14:17
von Leonidas
jens hat geschrieben:Bei mir geht's...
Kann ich bezeugen *g*

Verfasst: Dienstag 7. Juni 2005, 14:19
von Leonidas
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."

Verfasst: Dienstag 7. Juni 2005, 14:27
von 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

Verfasst: Dienstag 7. Juni 2005, 14:33
von Leonidas
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?

Verfasst: Dienstag 7. Juni 2005, 15:10
von janni80
genau das habe ich gesucht leonidas, vielen vielen dank