You are not logged in.

Dear visitor, welcome to sourceserver.info. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

  • DeaD_EyE

    Administrator

    You have to register first, to connect to this user.

9

Logdateien des SRCDS sortiert nach Datum in Unterverzeichnisse kopieren

Rating:

by DeaD_EyE, Monday, February 14th 2011, 11:11pm

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

Quoted

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.


Source code

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 Source code

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

Source code

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

Source code

1
2
7a3364ac975ca9cb66c1ee11b4521d76 log_sorter.exe
c94ee175212d0f745a91f8c0a9f0be67 log_sorter.zip


Beispiel

Source code

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

This article has been read 1,858 times.

Tags: Datum, Logs, Python, sortieren, SRCDS

Categories: Python, SRCDS


Blog navigation

Next article

Waffen der Spieler entfernen...

by DeaD_EyE (Friday, February 25th 2011, 1:38pm)

Previous article

Phishing allgemein

by DeaD_EyE (Thursday, February 10th 2011, 7:12pm)