Veel näidiseid

This commit is contained in:
2018-06-19 09:02:34 +03:00
parent e5dddf33e3
commit 6b9db62031
6 changed files with 109 additions and 33 deletions

View File

@@ -15,7 +15,7 @@ try:
scope_begin = datetime.strptime(sys.argv[2], "%Y-%m-%d %H:%M:%S")
except ValueError:
# Ei suutnud parsida kellaaega YYYY-mm-dd HH:MM:SS formaadis,
# proovime test formaati veel
# proovime teist formaati veel
scope_begin = datetime.strptime(sys.argv[2], "%d/%m/%Y %H:%M:%S")
except IndexError:
scope_begin = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
@@ -35,31 +35,38 @@ for root, dirs, files in os.walk(dir_logs):
# iga kausta kohta (root) on kättesaadav alamkataloogide nimekiri (dirs)
# ning failide nimekiri (files)
for filename in files:
if filename.startswith("access.log"):
path = os.path.join(root, filename)
file_end = datetime.fromtimestamp(
os.stat(path).st_mtime)
if scope_begin > file_end:
sys.stderr.write("Jätan vahele %s faili kuna logifaili lõpp oli %s\n" %
(path, file_end))
continue
if not filename.startswith("access.log"):
continue
file_start = None
with gzip.open(path) if path.endswith(".gz") else open(path) as fh:
for line in fh:
m = re.match(RE_LOG_ENTRY, line)
if not m:
continue
dt = datetime.strptime(m.group("timestamp")[:-6], "%d/%b/%Y:%H:%M:%S")
if not file_start: # loeme esimest rida sellest failist
file_start = dt
if scope_end < file_start:
sys.stderr.write("Jätan vahele %s faili kuna logifaili algus oli %s\n" % (path, file_start))
# Hüppa ridade lugemise tsükklist välja, järgmise faili juurde
break
else:
sys.stderr.write("Otsin logikirjeid failist %s\n" % path)
if dt > scope_end:
# Kleebi kokku faili absoluutne tee praegusest kataloogist ja failinimest
path = os.path.join(root, filename)
# Loe faili muutmise (samas ka viimase logikirje) kuupäev ja kellaaeg
file_end = datetime.fromtimestamp(os.stat(path).st_mtime)
# Kui otsitav ajavahemik algab peale viimase logikirje kuupäeva ja kellaaega,
# pole mõtet seda faili inspekteerida
if scope_begin > file_end:
sys.stderr.write("Jätan vahele %s faili kuna logifaili lõpp oli %s\n" %
(path, file_end))
continue
file_start = None
with gzip.open(path) if path.endswith(".gz") else open(path) as fh:
for line in fh:
m = re.match(RE_LOG_ENTRY, line)
if not m:
continue
dt = datetime.strptime(m.group("timestamp")[:-6], "%d/%b/%Y:%H:%M:%S")
if not file_start: # loeme esimest rida sellest failist
file_start = dt
if scope_end < file_start:
sys.stderr.write("Jätan vahele %s faili kuna logifaili algus oli %s\n" % (path, file_start))
# Hüppa ridade lugemise tsükklist välja, järgmise faili juurde
break
if dt > scope_begin:
print line.strip()
else:
sys.stderr.write("Otsin logikirjeid failist %s\n" % path)
if dt > scope_end:
break
if dt > scope_begin:
print line.strip()