mirror of
https://github.com/fcwu/docker-ubuntu-vnc-desktop
synced 2025-12-06 16:32:47 +01:00
1. split frontend and backend 2. simplify supervisor configuration 3. align backend log format with supervisor 4. set nginx worker to 1 5. delete static web pages
89 lines
3.3 KiB
Python
89 lines
3.3 KiB
Python
#!/usr/bin/env python
|
|
import sys
|
|
import logging
|
|
import logging.handlers
|
|
|
|
|
|
#The terminal has 8 colors with codes from 0 to 7
|
|
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
|
|
|
|
#These are the sequences need to get colored ouput
|
|
RESET_SEQ = "\033[0m"
|
|
COLOR_SEQ = "\033[1;%dm"
|
|
BOLD_SEQ = "\033[1m"
|
|
|
|
#The background is set with 40 plus the number of the color,
|
|
#and the foreground with 30
|
|
COLORS = {
|
|
'WARNING': COLOR_SEQ % (30 + YELLOW) + 'WARN ' + RESET_SEQ,
|
|
'INFO': COLOR_SEQ % (30 + WHITE) + 'INFO ' + RESET_SEQ,
|
|
'DEBUG': COLOR_SEQ % (30 + BLUE) + 'DEBUG' + RESET_SEQ,
|
|
'CRITICAL': COLOR_SEQ % (30 + YELLOW) + 'CRITI' + RESET_SEQ,
|
|
'ERROR': COLOR_SEQ % (30 + RED) + 'ERROR' + RESET_SEQ,
|
|
}
|
|
|
|
|
|
class ColoredFormatter(logging.Formatter):
|
|
def __init__(self, msg, use_color=True):
|
|
logging.Formatter.__init__(self, msg)
|
|
self.use_color = use_color
|
|
|
|
def format(self, record):
|
|
if self.use_color:
|
|
record.levelname = COLORS.get(record.levelname, record.levelname)
|
|
return logging.Formatter.format(self, record)
|
|
|
|
|
|
class LoggingConfiguration(object):
|
|
COLOR_FORMAT = "%(asctime)s" + \
|
|
" %(levelname)s %(message)s " + \
|
|
"(" + BOLD_SEQ + "%(filename)s" + RESET_SEQ + ":%(lineno)d)"
|
|
NO_COLOR_FORMAT = "%(asctime)s %(levelname)s " + \
|
|
"%(message)s " + \
|
|
"(%(filename)s:%(lineno)d)"
|
|
FILE_FORMAT = "%(asctime)s %(levelname)s " + \
|
|
"%(message)s "
|
|
|
|
@classmethod
|
|
def set(cls, log_level, log_filename, append=None, **kwargs):
|
|
""" Configure a rotating file logging
|
|
"""
|
|
logger = logging.getLogger()
|
|
logger.setLevel(log_level)
|
|
|
|
COLOR_FORMAT = cls.COLOR_FORMAT
|
|
NO_COLOR_FORMAT = cls.NO_COLOR_FORMAT
|
|
FILE_FORMAT = cls.FILE_FORMAT
|
|
if 'name' in kwargs:
|
|
COLOR_FORMAT = COLOR_FORMAT.replace('%(threadName)-22s',
|
|
'%-22s' % (kwargs['name']))
|
|
NO_COLOR_FORMAT = NO_COLOR_FORMAT.replace(
|
|
'%(threadName)-22s', '%-22s' % (kwargs['name']))
|
|
FILE_FORMAT = FILE_FORMAT.replace(
|
|
'%(threadName)-22s', '%s' % (kwargs['name']))
|
|
|
|
# Log to rotating file
|
|
try:
|
|
fh = logging.handlers.RotatingFileHandler(log_filename,
|
|
mode='a+',
|
|
backupCount=3)
|
|
fh = logging.FileHandler(log_filename, mode='a+')
|
|
fh.setFormatter(ColoredFormatter(FILE_FORMAT, False))
|
|
fh.setLevel(log_level)
|
|
logger.addHandler(fh)
|
|
if not append:
|
|
# Create a new log file on every new
|
|
fh.doRollover()
|
|
except:
|
|
pass
|
|
|
|
# Log to sys.stderr using log level passed through command line
|
|
if log_level != logging.NOTSET:
|
|
log_handler = logging.StreamHandler(sys.stdout)
|
|
if sys.platform.find('linux') >= 0:
|
|
formatter = ColoredFormatter(COLOR_FORMAT)
|
|
else:
|
|
formatter = ColoredFormatter(NO_COLOR_FORMAT, False)
|
|
log_handler.setFormatter(formatter)
|
|
log_handler.setLevel(log_level)
|
|
logger.addHandler(log_handler)
|