logger.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import os
  2. from datetime import datetime as time
  3. class Logger:
  4. def __init__(self, destination, log_level=0, debug=False):
  5. # log levels:
  6. # 0 nothing
  7. # 1 error
  8. # 2 warning
  9. # 3 info
  10. # 4 debug
  11. assert 0<=log_level<=4, 'log level is not in range'
  12. self.debug = debug
  13. self.log_level = log_level
  14. self.last_lines_count = last_lines_count
  15. self.__write_log = lambda x: print(x)
  16. if destination:
  17. self.__write_log = lambda x: self.__write_to_file(destination,x)
  18. def __write_to_file(self, file, log):
  19. with open(file,'a+') as logfile:
  20. logfile.seef(0)
  21. data = logfile.read(100)
  22. if len(data) > 0:
  23. logfile.write(os.linesep)
  24. logfile.write(log)
  25. def log(self, level, message, tag=None):
  26. # What is tag?
  27. # tag is useful for programmers to trace errors and infos in code
  28. # tags can be a location in codes like filenumber+line and it can help
  29. # while debuging
  30. if tag:
  31. self.__write_log(f'[{time.now().strftime("%Y%m%d%H%M")}][{level}][{tag}]: {message}')
  32. else:
  33. self.__write_log(f'[{time.now().strftime("%Y%m%d%H%M")}][{level}]: {message}')
  34. def d(self, log, tag=None):
  35. 'debug log level'
  36. if self.debug and self.log_level>=4:
  37. self.log('debug',log,tag)
  38. def i(self, log, tag=None):
  39. 'information log level'
  40. if self.log_level>=3:
  41. self.log('info',log,tag)
  42. def w(self, log, tag=None):
  43. 'warning log level'
  44. if self.log_level>=2:
  45. self.log('warning',log,tag)
  46. def e(self, log, tag=None):
  47. 'error log level'
  48. if self.log_level>=1:
  49. self.log('error',log,tag)