File indexing completed on 2024-05-12 05:35:10
0001 # SPDX-License-Identifier: GPL-3.0-or-later 0002 # SPDX-FileCopyrightText: 2021 Anupam Basak <anupam.basak27@gmail.com> 0003 0004 import logging 0005 import logging.handlers 0006 import os 0007 from enum import Enum 0008 try: 0009 from systemd.journal import JournalHandler 0010 systemd = True 0011 except Exception: 0012 systemd = False 0013 0014 import PicoWizard.utils.constants as Constants 0015 0016 0017 class Logger: 0018 LOG_LEVEL = 'INFO' 0019 LOG_FILE_PATH = Constants.LOG_FILE_PATH 0020 0021 class Mode(Enum): 0022 INFO = 0 0023 DEBUG = 1 0024 0025 @staticmethod 0026 def setLogMode(mode: Mode): 0027 if mode == Logger.Mode.INFO: 0028 Logger.LOG_LEVEL = 'INFO' 0029 Logger.LOG_FILE_PATH = Constants.LOG_FILE_PATH 0030 elif mode == Logger.Mode.DEBUG: 0031 Logger.LOG_LEVEL = 'DEBUG' 0032 Logger.LOG_FILE_PATH = Constants.LOG_FILE_PATH 0033 0034 log = Logger.getLogger(__name__) 0035 0036 log.debug("Debug mode enabled") 0037 0038 @staticmethod 0039 def getLogger(name): 0040 if not os.path.exists(os.path.dirname(Logger.LOG_FILE_PATH)): 0041 os.makedirs(os.path.dirname(Logger.LOG_FILE_PATH)) 0042 0043 # Logging settings 0044 formatter = logging.Formatter( 0045 fmt='%(asctime)s %(name)-35s [%(levelname)-5s] %(message)s', 0046 datefmt='%Y-%m-%d %H:%M:%S' 0047 ) 0048 0049 handler = logging.handlers.RotatingFileHandler(Logger.LOG_FILE_PATH, maxBytes=1000*1000*10, backupCount=10) 0050 handler.setFormatter(formatter) 0051 0052 screenHandler = logging.StreamHandler() 0053 screenHandler.setFormatter(formatter) 0054 0055 logger = logging.getLogger(name) 0056 logger.setLevel(logging.getLevelName(Logger.LOG_LEVEL)) 0057 0058 logger.addHandler(handler) 0059 logger.addHandler(screenHandler) 0060 0061 global systemd 0062 if systemd: 0063 journalHandlerFormatter = logging.Formatter( 0064 fmt='%(name)-35s [%(levelname)-5s] %(message)s' 0065 ) 0066 journalHandler = JournalHandler(SYSLOG_IDENTIFIER='pico-wizard') 0067 journalHandler.setFormatter(journalHandlerFormatter) 0068 0069 logger.addHandler(journalHandler) 0070 0071 return logger