2017-05-30 1 views
-4

Par exemple: [2017-04-14 03:56:22,085109]Comment parcourir une plage de temps spécifique dans un fichier journal?

Si c'est le moment où l'événement A arrive, je veux aller 15 minutes avant cette ligne dans le fichier journal qui aura des milliers de ligne et je veux itérer everyline dans cette période et Recherchez des mots-clés spécifiques. Chaque ligne dans le fichier journal a l'horodatage avec le même format.

+0

Jetez un oeil à [datetime] (https://docs.python.org/2/library/datetime.html) – ILostMySpoon

+0

Je vous recommande fortement d'utiliser une base de données pour exécuter ce type d'analyses au lieu de le faire en python . –

+0

Vous pouvez utiliser la méthode de classe ['datetime.strptime()'] (https://docs.python.org/2/library/datetime.html#datetime.datetime.strptime) pour convertir les heures du fichier en Python ' instances datetime, qui prennent en charge les comparaisons. Vous pouvez ensuite les utiliser pour sélectionner les lignes dans le fichier qui sont dans l'intervalle d'intérêt (en supposant que vous avez aussi l'heure de l'événement A dans une instance 'datetime'). – martineau

Répondre

0

Vous pouvez filtrer les lignes souhaitées avec une heure de début et une heure de fin.

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 

Mais je vous recommande d'utiliser python3 (au lieu de python2). filter renvoie un itérateur au lieu de la liste complète.