first commit
commit
d670234437
|
|
@ -0,0 +1,99 @@
|
||||||
|
import os
|
||||||
|
import datetime
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class LogLevel(Enum):
|
||||||
|
ERROR = 1
|
||||||
|
WARNING = 2
|
||||||
|
INFO = 3
|
||||||
|
DEBUG = 4
|
||||||
|
|
||||||
|
def __gt__(self, other):
|
||||||
|
print(self, other, self.value>other.value)
|
||||||
|
return self.value > other.value
|
||||||
|
|
||||||
|
def __lt__(self, other):
|
||||||
|
return self.value < other.value
|
||||||
|
|
||||||
|
class LogPeriod(Enum):
|
||||||
|
ONE = 1
|
||||||
|
HOURLY = 2
|
||||||
|
DAILY = 3
|
||||||
|
WEEKLY = 4
|
||||||
|
MONTHLY = 5
|
||||||
|
|
||||||
|
|
||||||
|
class Logger:
|
||||||
|
|
||||||
|
def __init__(self, path, file_name, sep=',', endl='\n', period=LogPeriod.ONE, level=LogLevel.INFO, out_time_f='%Y.%m.%d %H:%M:%S'):
|
||||||
|
self._path = path
|
||||||
|
self._file_name = file_name
|
||||||
|
self._sep = sep + ' '
|
||||||
|
self._endl = endl
|
||||||
|
self._period = period
|
||||||
|
self._level = level
|
||||||
|
self._out_time_f = out_time_f
|
||||||
|
|
||||||
|
def _get_file(self)->str:
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
f_name = ''
|
||||||
|
if self._period == LogPeriod.HOURLY:
|
||||||
|
f_name = now.strftime('%Y.%m.%d %H')
|
||||||
|
elif self._period == LogPeriod.DAILY:
|
||||||
|
f_name = now.strftime('%Y.%m.%d')
|
||||||
|
elif self._period == LogPeriod.WEEKLY:
|
||||||
|
f_name = str(now.year) + ' KW ' + str(now.isocalendar().week)
|
||||||
|
elif self._period == LogPeriod.MONTHLY:
|
||||||
|
f_name = now.strftime('%Y.%m')
|
||||||
|
return f_name + ' ' + self._file_name
|
||||||
|
|
||||||
|
def _write(self, level, message):
|
||||||
|
info_str = self._get_time() + self._sep + level.name + self._sep + message + self._endl
|
||||||
|
path_to_file = self._path+os.sep+self._get_file()
|
||||||
|
try:
|
||||||
|
if os.path.exists(path_to_file):
|
||||||
|
with open(path_to_file, '+a') as file:
|
||||||
|
file.write(info_str)
|
||||||
|
else:
|
||||||
|
with open(path_to_file, '+a') as file:
|
||||||
|
file.write("DATETIME" + self._sep + "LEVEL" + self._sep + "MESSAGE" + self._endl)
|
||||||
|
file.write(info_str)
|
||||||
|
except PermissionError as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
def _get_time(self)->str:
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
timestr = now.strftime(self._out_time_f)
|
||||||
|
return timestr
|
||||||
|
|
||||||
|
def error(self, *args, **kwargs):
|
||||||
|
mystr = ' '.join(list(args))
|
||||||
|
self._write(LogLevel.ERROR, mystr)
|
||||||
|
|
||||||
|
def warning(self, *args, **kwargs):
|
||||||
|
if self._level < LogLevel.WARNING:
|
||||||
|
return
|
||||||
|
mystr = ' '.join(list(args))
|
||||||
|
self._write(LogLevel.WARNING, mystr)
|
||||||
|
|
||||||
|
def info(self, *args, **kwargs):
|
||||||
|
if self._level < LogLevel.INFO:
|
||||||
|
return
|
||||||
|
mystr = ' '.join(list(args))
|
||||||
|
self._write(LogLevel.INFO, mystr)
|
||||||
|
|
||||||
|
def debug(self, *args, **kwargs):
|
||||||
|
if self._level < LogLevel.DEBUG:
|
||||||
|
return
|
||||||
|
mystr = ' '.join(list(args))
|
||||||
|
self._write(LogLevel.DEBUG, mystr)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
log = Logger('.', 'mylog.csv', level=LogLevel.DEBUG, period=LogPeriod.HOURLY)
|
||||||
|
log.info('Hallo')
|
||||||
|
log.error('Hallo')
|
||||||
|
log.warning('Hallo')
|
||||||
|
log.debug('Hallo')
|
||||||
|
|
||||||
Loading…
Reference in New Issue