2017-05-30 2 views
-4

Zum Beispiel: [2017-04-14 03:56:22,085109]Wie durchläuft man einen bestimmten Zeitbereich in einer Logdatei?

Wenn dies ist die Zeit, wo das Ereignis A passiert, ich 15 Minuten vor dieser Zeile in der Log-Datei gehen will, die Tausende von Linie hat und ich mag durch Everyline in dieser Zeit zu durchlaufen und Suchen Sie nach bestimmten Schlüsselwörtern. Jede Zeile in der Logdatei hat den gleichen Zeitstempel.

+0

Werfen Sie einen Blick auf [datetime] (https://docs.python.org/2/library/datetime.html) – ILostMySpoon

+0

Ich empfehle Ihnen dringend, einige Datenbanken zu verwenden, um diese Art von Analysen statt in Python zu tun . –

+0

Sie können die Klassenmethode '' datetime.strptime() '] (https://docs.python.org/2/library/datetime.html#datetime.datetime.strptime) verwenden, um die Zeiten in der Datei in Python' zu konvertieren datetime'-Instanzen, die Vergleiche unterstützen. Sie können sie dann verwenden, um die Zeilen in der Datei auszuwählen, die sich innerhalb des interessierenden Intervalls befinden (vorausgesetzt, dass Sie die Zeit von Ereignis A auch in einer "datetime" -Instanz haben). – martineau

Antwort

0

Sie können die gewünschten Zeilen mit einer Start- und Endzeit filtern.

main.py

from datetime import datetime, timedelta 

event_time = datetime.strptime('2017-04-14 03:56:22,085109', '%Y-%m-%d %X,%f') 
event_start = event_time - timedelta(minutes=15) 


def line_date(line): 
    return datetime.strptime(line[1:27], '%Y-%m-%d %X,%f') 


with open('example.log', 'r') as myfile: 
    lines = filter(lambda x: event_start <= line_date(x) <= event_time, 
        myfile.readlines()) 


print(lines) 

example.log

[2017-04-13 03:56:22,085109] My old log 
[2017-04-14 03:55:22,085109] My log in less than 15 minutes ago 
[2017-04-14 03:56:22,085109] My important event 
[2017-04-14 03:57:22,085109] Log after my important event 

Aber ich empfehle Ihnen python3 (statt python2) zu verwenden. filter gibt einen Iterator anstelle der vollständigen Liste zurück.

Verwandte Themen