Files
Pynomicon/classes/utils/logging.py
2023-05-03 10:28:02 -04:00

107 lines
2.3 KiB
Python

import sys
from time import strftime, time
import csv
import json
def log_genname(dire="", basename="log-", ext="log"):
dirname = ""
if dire != "":
dirname = dire + "/"
return dirname + basename + strftime("%Y%m%d-%H%M%S.") + ext
#
# Text logging
#
class LOGlog():
def __init__(self):
self.filename = ""
self.handle = 0
self.lineno = 0
def make(self, dire="", basename="log-", ext="log"):
if self.handle:
self.handle.close()
self.lineno = 0
self.filename = log_genname(dire, basename, ext)
self.handle = open(self.filename, 'a')
return self.filename
def create(self, file):
if self.handle:
self.handle.close()
self.lineno = 0
self.filename = file
self.handle = open(self.filename, 'a')
return self.filename
def open(self, filename):
if self.handle:
self.handle.close()
self.filename = filename
self.handle = open(filename, 'r')
def header(self, str):
self.handle.write(str)
def write(self, str):
self.lineno = self.lineno + 1
self.handle.write(str + "\n")
def read(self):
self.lineno = self.lineno + 1
return self.handle.read()
def close(self):
self.handle.close()
def lines(self):
return self.lineno
#
# CSV logging
#
class CSVlog(LOGlog):
def __init__(self):
super().__init__()
self.header = ""
def make(self, dire="", basename="log-"):
return super().make(dire, basename, "csv")
def open(self, filename):
self.reader = csv.reader(super().filename)
super().open(filename)
def read(self):
return self.reader.next(super().handle)
def readall(self, csvfile):
data = csv.reader(csvfile)
csv.close()
return list(data)
#
# JSON logging
#
class JSONlog(LOGlog):
def __init__(self, quoted=0):
super().__init__()
self.quoted = quoted
def make(self, dire="", basename="log-", ext="json"):
return super().make(dire, basename, ext)
def open(self, filename):
super().open(filename)
def header(self, str):
super().header(str)
def write(self, data):
if self.quoted:
super().write("'" + json.dumps(data, separators=(',', ':')) + "'")
else:
super().write(json.dumps(data, separators=(',', ':')))
def read(self, ):
return json.loads(super().read())