mirror of
https://github.com/avatao-content/baseimage-tutorial-framework
synced 2024-11-22 19:21:31 +00:00
Acquire log path from the environment
This commit is contained in:
parent
149dcb0b4b
commit
778f155580
@ -42,6 +42,7 @@ ENV PYTHONPATH="/usr/local/lib" \
|
|||||||
TFW_SNAPSHOTS_DIR="/.tfw/snapshots" \
|
TFW_SNAPSHOTS_DIR="/.tfw/snapshots" \
|
||||||
TFW_AUTH_KEY="/tmp/tfw-auth.key" \
|
TFW_AUTH_KEY="/tmp/tfw-auth.key" \
|
||||||
TFW_HISTFILE="/home/${AVATAO_USER}/.bash_history" \
|
TFW_HISTFILE="/home/${AVATAO_USER}/.bash_history" \
|
||||||
|
TFW_LOGFILE="/var/log/tfw.log" \
|
||||||
PROMPT_COMMAND="history -a"
|
PROMPT_COMMAND="history -a"
|
||||||
|
|
||||||
COPY bashrc /tmp
|
COPY bashrc /tmp
|
||||||
|
@ -5,7 +5,7 @@ from datetime import datetime
|
|||||||
from traceback import format_exception, walk_tb
|
from traceback import format_exception, walk_tb
|
||||||
from logging import DEBUG, getLogger, Handler, Formatter, Filter
|
from logging import DEBUG, getLogger, Handler, Formatter, Filter
|
||||||
|
|
||||||
TFW_LOG_PATH = '/var/log/tfw.log'
|
from .envvars import TFWENV
|
||||||
|
|
||||||
|
|
||||||
class COLOR:
|
class COLOR:
|
||||||
@ -29,20 +29,18 @@ class COLOR:
|
|||||||
|
|
||||||
|
|
||||||
class TFWLog:
|
class TFWLog:
|
||||||
def __init__(self, path=TFW_LOG_PATH, level=DEBUG):
|
def __init__(self, path=TFWENV.LOGFILE, level=DEBUG):
|
||||||
self.log = getLogger()
|
self.log = getLogger()
|
||||||
self.old_level = self.log.level
|
self.old_level = self.log.level
|
||||||
self.new_level = level
|
self.new_level = level
|
||||||
self.handler = TFWLogHandler(path)
|
self.handler = TFWLogHandler(path)
|
||||||
self.handler.setFormatter(TFWLogFormatter())
|
self.handler.setFormatter(TFWLogFormatter(20))
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self.log.setLevel(self.new_level)
|
self.log.setLevel(self.new_level)
|
||||||
self.log.addHandler(self.handler)
|
self.log.addHandler(self.handler)
|
||||||
self.log.info('Logging started.')
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.log.info('Stop logging.')
|
|
||||||
self.log.setLevel(self.old_level)
|
self.log.setLevel(self.old_level)
|
||||||
self.handler.close()
|
self.handler.close()
|
||||||
self.log.removeHandler(self.handler)
|
self.log.removeHandler(self.handler)
|
||||||
@ -64,7 +62,7 @@ class TFWLogHandler(Handler):
|
|||||||
self.logfile.close()
|
self.logfile.close()
|
||||||
|
|
||||||
class TFWLogFormatter(Formatter):
|
class TFWLogFormatter(Formatter):
|
||||||
severity = {
|
severity_to_color = {
|
||||||
'CRITICAL' : COLOR.BOLDRED,
|
'CRITICAL' : COLOR.BOLDRED,
|
||||||
'ERROR' : COLOR.RED,
|
'ERROR' : COLOR.RED,
|
||||||
'WARNING' : COLOR.YELLOW,
|
'WARNING' : COLOR.YELLOW,
|
||||||
@ -73,7 +71,8 @@ class TFWLogFormatter(Formatter):
|
|||||||
'NOTSET' : COLOR.CYAN
|
'NOTSET' : COLOR.CYAN
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, limit):
|
||||||
|
self.limit = limit
|
||||||
self.last_trace = None
|
self.last_trace = None
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
@ -100,21 +99,20 @@ class TFWLogFormatter(Formatter):
|
|||||||
trace = ''
|
trace = ''
|
||||||
|
|
||||||
short_entry = (f'[{COLOR.GREY}{date}{COLOR.RESET}|>'
|
short_entry = (f'[{COLOR.GREY}{date}{COLOR.RESET}|>'
|
||||||
f'{self.severity[record.levelname]}{record.module}:'
|
f'{self.severity_to_color[record.levelname]}{record.module}:'
|
||||||
f'{record.levelname.lower()}{COLOR.RESET}] {short_message}'
|
f'{record.levelname.lower()}{COLOR.RESET}] {short_message}'
|
||||||
f'{trace}')
|
f'{trace}')
|
||||||
long_entry = (f'[{date}|>{record.module}:{record.levelname.lower()}] '
|
long_entry = (f'[{date}|>{record.module}:{record.levelname.lower()}] '
|
||||||
f'{long_message}{trace}')
|
f'{long_message}{trace}')
|
||||||
return short_entry, long_entry
|
return short_entry, long_entry
|
||||||
|
|
||||||
def trim(self, value, in_dict=False):
|
def trim(self, value):
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
trimmed = {k: self.trim(v, True) for k, v in value.items()}
|
return {k: self.trim(v, True) for k, v in value.items()}
|
||||||
return trimmed if in_dict else str(trimmed)
|
|
||||||
if isinstance(value, (int, float)):
|
if isinstance(value, (int, float)):
|
||||||
return value
|
return value
|
||||||
value_str = str(value)
|
value_str = str(value)
|
||||||
return value_str if len(value_str) <= 20 else f'{value_str[:20]}...'
|
return value_str if len(value_str) <= self.limit else f'{value_str[:self.limit]}...'
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def fetch_exception_origin(trace):
|
def fetch_exception_origin(trace):
|
||||||
|
Loading…
Reference in New Issue
Block a user