Logger.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. """Logger module: contains the logger class which creates and writes
  2. data to log files on disk"""
  3. import sys
  4. import time
  5. import math
  6. class Logger:
  7. """Logger class: """
  8. # built-ins
  9. def __init__(self, fileName="log"):
  10. """__init__(self)
  11. Logger constructor"""
  12. self.__timeStamp = 1
  13. self.__startTime = 0.0
  14. self.__logFile = None
  15. self.__logFileName = fileName
  16. # setters and getters
  17. def setTimeStamp(self, bool):
  18. """setTimeStamp(self, int)
  19. Toggle time stamp printing with log entries on and off"""
  20. self.__timeStamp = bool
  21. def getTimeStamp(self):
  22. """getTimeStamp(self)
  23. Return whether or not we are printing time stamps with log entries"""
  24. return(self.__timeStamp)
  25. # logging control
  26. def resetStartTime(self):
  27. """resetStartTime()
  28. Reset the start time of the log file for time stamps"""
  29. self.__startTime = time.time()
  30. def log(self, entryString):
  31. """log(self, string)
  32. Print the given string to the log file"""
  33. if (self.__logFile == None):
  34. self.__openLogFile()
  35. if (self.__timeStamp):
  36. self.__logFile.write(self.__getTimeStamp())
  37. self.__logFile.write(entryString + '\n')
  38. # logging functions
  39. def __openLogFile(self):
  40. """__openLogFile(self)
  41. Open a file for logging error/warning messages"""
  42. self.resetStartTime()
  43. t = time.localtime(self.__startTime)
  44. st = time.strftime("%m-%d-%Y-%H-%M-%S", t)
  45. logFileName = self.__logFileName + "." + st
  46. self.__logFile = open(logFileName, "w")
  47. def __closeLogFile(self):
  48. """__closeLogFile(self)
  49. Close the error/warning output file"""
  50. if (self.__logFile != None):
  51. self.__logFile.close()
  52. def __getTimeStamp(self):
  53. """__getTimeStamp(self)
  54. Return the offset between current time and log file startTime"""
  55. t = time.time()
  56. dt = t - self.__startTime
  57. if (dt >= 86400):
  58. days = int(math.floor(dt/86400))
  59. dt = dt%86400
  60. else:
  61. days = 0
  62. if (dt >= 3600):
  63. hours = int(math.floor(dt/3600))
  64. dt = dt%3600
  65. else:
  66. hours = 0
  67. if (dt >= 60):
  68. minutes = int(math.floor(dt/60))
  69. dt = dt%60
  70. else:
  71. minutes = 0
  72. seconds = int(math.ceil(dt))
  73. return("%02d:%02d:%02d:%02d: " % (days, hours, minutes, seconds) )