Z1maV1

CC Logger

Aug 18th, 2024
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.10 KB | None | 0 0
  1. local logger = {}
  2.  
  3. logger.levels = {
  4.     DEBUG = {"DEBUG", 1},
  5.     INFO = {"INFO", 2},
  6.     WARNING = {"WARNING", 3},
  7.     ERROR = {"ERROR", 4},
  8.     CRITICAL = {"CRITICAL", 5},
  9. }
  10.  
  11. -- Defaults
  12. local logFilePath = "/tmp/logger.log"
  13. local logToFile = true
  14. local logToConsole = true
  15. local includeScreenTimestamp = true
  16. local logLevel = logger.levels.INFO
  17.  
  18. -- internal functions
  19. local function getTimeStamp()
  20.     return os.date("%Y-%m-%d %H:%M:%S")
  21. end
  22.  
  23. local function writeLog(level, message)
  24.     if level[2] < logLevel[2] then
  25.         return
  26.     end
  27.  
  28.     local stampped = string.format("[%s] [%s] %s", getTimeStamp(), level[1], message)
  29.     local unstampped = string.format("[%s] %s", level[1], message)
  30.  
  31.     if logToConsole then
  32.         if includeScreenTimestamp then
  33.             print(stampped)
  34.         else
  35.             print(unstampped)
  36.         end
  37.     end
  38.  
  39.     if logToFile then
  40.         local handle = fs.open(logFilePath, "a")
  41.         if handle then
  42.             handle.writeLine(stampped)
  43.             handle.close()
  44.         else
  45.             logToFile = false
  46.             writeLog(logger.levels.ERROR, "Internal > Unable to log into file, disabling file log")
  47.         end
  48.     end
  49. end
  50.  
  51. function logger.debug(message)
  52.     writeLog(logger.levels.DEBUG, message)
  53. end
  54.  
  55. function logger.info(message)
  56.     writeLog(logger.levels.INFO, message)
  57. end
  58.  
  59. function logger.warning(message)
  60.     writeLog(logger.levels.WARNING, message)
  61. end
  62.  
  63. function logger.error(message)
  64.     writeLog(logger.levels.ERROR, message)
  65. end
  66.  
  67. function logger.critical(message)
  68.     writeLog(logger.levels.CRITICAL, message)
  69. end
  70.  
  71. function logger.configure(options)
  72.     if options.filePath then
  73.         logFilePath = options.filePath
  74.     end
  75.     if options.logToFile ~= nil then
  76.         logToFile = options.logToFile
  77.     end
  78.     if options.logToConsole ~= nil then
  79.         logToConsole = options.logToConsole
  80.     end
  81.     if options.stampScreen ~= nil then
  82.         includeScreenTimestamp = options.stampScreen
  83.     end
  84.     if options.logLevel then
  85.         logLevel = options.logLevel
  86.     end
  87. end
  88.  
  89. return logger
Advertisement
Add Comment
Please, Sign In to add comment