Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • DeaD_EyE

    Administrator

    Sie müssen sich registrieren, um eine Verbindung mit diesem Benutzer herzustellen.

9

Logdateien des SRCDS sortiert nach Datum in Unterverzeichnisse kopieren

Bewertung:

Von DeaD_EyE, Montag, 14. Februar 2011, 23:11

Heute beim Durchlesen der HLDS-Mailing-List, bin ich auf das hier gestoßen:

Zitat

Hi!
Anyone here that has any log-scripts for their hlds/srcds setups that moves yesterdays logs to a folder with yesterdays date?
Windows/Unix
------
//Rikard 'Zapy' Bremark



Er möchte also ein Script, dass die Logdateien des Servers in Unterverzeichnisse packt, die das jeweilige Datum haben.
Die erste Antwort auf seinen Beitrag hatte schon eine sehr einfache Lösung parat.


Quellcode

1
2
crontab -e:
0 0 * * * cd /path/to/logs/ && mkdir "`date +%F`" && mv *.log "`date +%F`"

Hier ist aber das Problem, dass bereits existierende Logdateien zur ersten Ausführung des Cronjobs alle in ein Unterverzeichnis mit dem Datum des Ausführungszeitpunktes verschoben werden. D.h. wer im Nachhinein seine Logs sortieren möchte, kann diese Methode nicht einsetzen. An den nachfolgenden Tagen würde das Script die Dateien in die richtigen Verzeichnisse packen.

Ich kam zu dem Schluss, dass es vielleicht besser wäre den Zeitstempel der Dateien auszulesen. Die Dateinamen der Logdateien beinhalten z.B. das Jahr nicht. Mehr zum Format der Logdateien kann bei uns im Wiki eingesehen werden. Letztendlich wäre es mir zu umständlich gewesen jede Datei einzeln nach dem Inhalt auszulesen, nur um das Jahr zu erfahren.

Für diese Aufgabe habe ich dann kein kleines Python-Script geschrieben, welches die Aufgabe erledigt:


PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/python
from glob import iglob
from shutil import move
from datetime import datetime
from os import chdirpathmkdirstat
import sys

def usage():
    print "Please run the Programm with %s /path/to/srcds_logfiles" sys.argv[0]
    sys.exit()

if len(sys.argv) <= 1:
    usage()

now datetime.today().strftime('%Y-%m-%d')

if path.isdir(sys.argv[1]):
    chdir(sys.argv[1])
    for log in iglob('L???????.log'):
        log_date=datetime.fromtimestamp(stat(log)[8])
        dirname=datetime.strftime(log_date,'%Y-%m-%d')
        if dirname == now:
            continue
        if not path.isdir(dirname) and not path.isfile(dirname):
            mkdir(dirname)
        if not path.isfile(path.join(dirname,log)):
            move(log,dirname)
else:
    usage()



Funktion des Programms
Es erstellt für jedes Datum der Logdateien ein Unterverzeichnis im angegebenen Pfad und verschiebt diese dort hin.

Aufruf des Scripts

Quellcode

1
log_sort.py /pfad/zu/den/logs


Update
Script wurde so erweitert, dass Logs des aktuellen Tages nicht verschoben werden. Des Weiteren wird jetzt auch überprüft, ob eine Datei schon vorhanden ist. Sollte sie doppelt sein, kommt es jetzt nicht mehr zum Programmabbruch.
Unter anderem hab ich auch vergessen zu dem Pfad zu wechseln. Solange das Script im gleichen Verzeichnis ausgeführt wurde, wurden die Logs gefunden. Sobald man das Script außerhalb des Log-Verzeichnisses aufgerufen hat, passierte nichts.

Windows
Für Windows habe ich das Programm kompiliert. Somit ist eine Pythoninstallation nicht notwendig.

Download
Rapidshare-Mirror

MD5

Quellcode

1
2
7a3364ac975ca9cb66c1ee11b4521d76 log_sorter.exe
c94ee175212d0f745a91f8c0a9f0be67 log_sorter.zip


Beispiel

Quellcode

1
log_sorter.exe C:\HLServer\orangebox\cstrike\logs

Dieser Artikel wurde bereits 54 785 mal gelesen.

Tags: Datum, Logs, Python, sortieren, SRCDS

Kategorien: Python, SRCDS


Blog Navigation

Nächster Artikel

Waffen der Spieler entfernen...

Von DeaD_EyE (Freitag, 25. Februar 2011, 13:38)

Vorheriger Artikel

Phishing allgemein

Von DeaD_EyE (Donnerstag, 10. Februar 2011, 19:12)