Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-25 08:29:08

0001 import logging
0002 
0003 # Consider https://signoz.io/guides/how-should-i-log-while-using-multiprocessing-in-python/
0004 # for multiprocessing logging and/or buffered logging for I/O performance.
0005 
0006 # ============================================================================
0007 # Define custom level
0008 CHATTY_LEVEL_NUM = 5
0009 logging.addLevelName(CHATTY_LEVEL_NUM, "CHATTY")
0010 
0011 def chatty(self, message, *args, **kws):
0012     # Yes, logger takes its '*args' as 'args'.
0013     if self.isEnabledFor(CHATTY_LEVEL_NUM):
0014         self._log(CHATTY_LEVEL_NUM, message, args, stacklevel=2, **kws)
0015 logging.Logger.chatty = chatty
0016 
0017 # ============================================================================
0018 # Prettier logging for console output
0019 class CustomFormatter(logging.Formatter):
0020     grey     = "\x1b[38;20m"
0021     yellow   = "\x1b[33;20m"
0022     green    = "\x1b[32;20m"
0023     blue     = "\x1b[36;20m"
0024     red      = "\x1b[31;20m"
0025     bold_red = "\x1b[31;1m"
0026     reset    = "\x1b[0m"
0027     format   = "%(asctime)s [%(levelname)s] - %(message)s"
0028 
0029     FORMATS = {
0030         CHATTY_LEVEL_NUM: yellow   + format + " (%(filename)s:%(lineno)d) " + reset, # Added CHATTY level
0031         logging.DEBUG:    grey     + format + " (%(filename)s:%(lineno)d) " + reset,
0032         logging.INFO:     green    + format + reset,
0033         logging.WARNING:  blue     + format + " (%(filename)s:%(lineno)d) " + reset,
0034         logging.ERROR:    red      + format + " (%(filename)s:%(lineno)d) " + reset,
0035         logging.CRITICAL: bold_red + format + " (%(filename)s:%(lineno)d) " + reset
0036     }
0037 
0038     def format(self, record):
0039         log_fmt = self.FORMATS.get(record.levelno, self.format)
0040         formatter = logging.Formatter(log_fmt)
0041         return formatter.format(record)
0042 
0043 # ============================================================================
0044 slogger = logging.getLogger( 'sphenixprod' )
0045 # Prevent duplicate handlers if this module is reloaded
0046 if not slogger.hasHandlers():
0047     ch = logging.StreamHandler()
0048     ch.setFormatter(CustomFormatter())
0049     slogger.addHandler(ch)
0050 
0051 CHATTY   = slogger.chatty # Added convenience function for lots of output
0052 DEBUG    = slogger.debug
0053 INFO     = slogger.info
0054 WARN     = slogger.warning
0055 ERROR    = slogger.error
0056 CRITICAL = slogger.critical
0057