logging rollover improvements
This commit is contained in:
parent
8f07f2197e
commit
685adea6e9
@ -125,28 +125,29 @@ def patch_threading_excepthook():
|
|||||||
|
|
||||||
# Rotating file handler based on Klipper and Moonraker's implementation
|
# Rotating file handler based on Klipper and Moonraker's implementation
|
||||||
class KlipperScreenLoggingHandler(logging.handlers.RotatingFileHandler):
|
class KlipperScreenLoggingHandler(logging.handlers.RotatingFileHandler):
|
||||||
def __init__(self, software_version, filename, **kwargs):
|
def __init__(self, filename, **kwargs):
|
||||||
super(KlipperScreenLoggingHandler, self).__init__(filename, **kwargs)
|
super(KlipperScreenLoggingHandler, self).__init__(filename, **kwargs)
|
||||||
self.rollover_info = {
|
self.rollover_info = {
|
||||||
'header': f"{'-' * 20}KlipperScreen Log Start{'-' * 20}",
|
'header': f"{'-' * 20}KlipperScreen Log Start{'-' * 20}",
|
||||||
'version': f"Git Version: {software_version}",
|
'version': f"KlipperScreen Version: {get_software_version()}",
|
||||||
|
'py_ver': f"Python version: {sys.version_info.major}.{sys.version_info.minor}",
|
||||||
}
|
}
|
||||||
lines = [line for line in self.rollover_info.values() if line]
|
self.log_start()
|
||||||
if self.stream is not None:
|
|
||||||
self.stream.write("\n".join(lines) + "\n")
|
|
||||||
|
|
||||||
def set_rollover_info(self, name, item):
|
def set_rollover_info(self, name, item):
|
||||||
self.rollover_info[name] = item
|
self.rollover_info[name] = item
|
||||||
|
|
||||||
def doRollover(self):
|
def doRollover(self):
|
||||||
super(KlipperScreenLoggingHandler, self).doRollover()
|
super(KlipperScreenLoggingHandler, self).doRollover()
|
||||||
lines = [line for line in self.rollover_info.values() if line]
|
self.log_start()
|
||||||
if self.stream is not None:
|
|
||||||
self.stream.write("\n".join(lines) + "\n")
|
def log_start(self):
|
||||||
|
for line in self.rollover_info.values():
|
||||||
|
logging.info(line)
|
||||||
|
|
||||||
|
|
||||||
# Logging based on Arksine's logging setup
|
# Logging based on Arksine's logging setup
|
||||||
def setup_logging(log_file, software_version):
|
def setup_logging(log_file):
|
||||||
root_logger = logging.getLogger()
|
root_logger = logging.getLogger()
|
||||||
queue = Queue()
|
queue = Queue()
|
||||||
queue_handler = logging.handlers.QueueHandler(queue)
|
queue_handler = logging.handlers.QueueHandler(queue)
|
||||||
@ -159,7 +160,7 @@ def setup_logging(log_file, software_version):
|
|||||||
stdout_hdlr.setFormatter(stdout_fmt)
|
stdout_hdlr.setFormatter(stdout_fmt)
|
||||||
fh = listener = None
|
fh = listener = None
|
||||||
try:
|
try:
|
||||||
fh = KlipperScreenLoggingHandler(software_version, log_file, maxBytes=4194304, backupCount=1)
|
fh = KlipperScreenLoggingHandler(log_file, maxBytes=4194304, backupCount=1)
|
||||||
formatter = logging.Formatter('%(asctime)s [%(filename)s:%(funcName)s()] - %(message)s')
|
formatter = logging.Formatter('%(asctime)s [%(filename)s:%(funcName)s()] - %(message)s')
|
||||||
fh.setFormatter(formatter)
|
fh.setFormatter(formatter)
|
||||||
listener = logging.handlers.QueueListener(queue, fh, stdout_hdlr)
|
listener = logging.handlers.QueueListener(queue, fh, stdout_hdlr)
|
||||||
|
15
screen.py
15
screen.py
@ -94,7 +94,7 @@ class KlipperScreen(Gtk.Window):
|
|||||||
wayland = False
|
wayland = False
|
||||||
windowed = False
|
windowed = False
|
||||||
|
|
||||||
def __init__(self, args, version):
|
def __init__(self, args):
|
||||||
try:
|
try:
|
||||||
super().__init__(title="KlipperScreen")
|
super().__init__(title="KlipperScreen")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -103,7 +103,6 @@ class KlipperScreen(Gtk.Window):
|
|||||||
self.blanking_time = 600
|
self.blanking_time = 600
|
||||||
self.use_dpms = True
|
self.use_dpms = True
|
||||||
self.apiclient = None
|
self.apiclient = None
|
||||||
self.version = version
|
|
||||||
self.dialogs = []
|
self.dialogs = []
|
||||||
self.confirm = None
|
self.confirm = None
|
||||||
self.panels_reinit = []
|
self.panels_reinit = []
|
||||||
@ -372,7 +371,7 @@ class KlipperScreen(Gtk.Window):
|
|||||||
title.set_line_wrap_mode(Pango.WrapMode.CHAR)
|
title.set_line_wrap_mode(Pango.WrapMode.CHAR)
|
||||||
title.set_halign(Gtk.Align.START)
|
title.set_halign(Gtk.Align.START)
|
||||||
title.set_hexpand(True)
|
title.set_hexpand(True)
|
||||||
version = Gtk.Label(label=f"{self.version}")
|
version = Gtk.Label(label=f"{functions.get_software_version()}")
|
||||||
version.set_halign(Gtk.Align.END)
|
version.set_halign(Gtk.Align.END)
|
||||||
|
|
||||||
help_msg = _("Provide KlipperScreen.log when asking for help.\n")
|
help_msg = _("Provide KlipperScreen.log when asking for help.\n")
|
||||||
@ -1050,7 +1049,6 @@ def main():
|
|||||||
logging.error(f"python {sys.version_info.major}.{sys.version_info.minor} "
|
logging.error(f"python {sys.version_info.major}.{sys.version_info.minor} "
|
||||||
f"does not meet the minimum requirement {minimum[0]}.{minimum[1]}")
|
f"does not meet the minimum requirement {minimum[0]}.{minimum[1]}")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
version = functions.get_software_version()
|
|
||||||
parser = argparse.ArgumentParser(description="KlipperScreen - A GUI for Klipper")
|
parser = argparse.ArgumentParser(description="KlipperScreen - A GUI for Klipper")
|
||||||
homedir = os.path.expanduser("~")
|
homedir = os.path.expanduser("~")
|
||||||
|
|
||||||
@ -1067,18 +1065,13 @@ def main():
|
|||||||
)
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
functions.setup_logging(
|
functions.setup_logging(os.path.normpath(os.path.expanduser(args.logfile)))
|
||||||
os.path.normpath(os.path.expanduser(args.logfile)),
|
|
||||||
version
|
|
||||||
)
|
|
||||||
functions.patch_threading_excepthook()
|
functions.patch_threading_excepthook()
|
||||||
logging.info(f"Python version: {sys.version_info.major}.{sys.version_info.minor}")
|
|
||||||
logging.info(f"KlipperScreen version: {version}")
|
|
||||||
if not Gtk.init_check():
|
if not Gtk.init_check():
|
||||||
logging.critical("Failed to initialize Gtk")
|
logging.critical("Failed to initialize Gtk")
|
||||||
raise RuntimeError
|
raise RuntimeError
|
||||||
try:
|
try:
|
||||||
win = KlipperScreen(args, version)
|
win = KlipperScreen(args)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.exception(f"Failed to initialize window\n{e}\n\n{traceback.format_exc()}")
|
logging.exception(f"Failed to initialize window\n{e}\n\n{traceback.format_exc()}")
|
||||||
raise RuntimeError from e
|
raise RuntimeError from e
|
||||||
|
Loading…
x
Reference in New Issue
Block a user