logging is now screenless too - printing to rcp printer.

workspace
Brendan Howell 7 years ago
parent 630cf5f03c
commit 2e74af06dd

@ -56,6 +56,19 @@ def add_api(apistr, name=""):
return decorator
class LogPrinter(logging.Handler):
"""
LogPrinter prints logs on a receipt printer for screenless debugging.
"""
def emit(self, record):
prn = printer.Usb(0x416, 0x5011, in_ep=0x81, out_ep=0x03)
msg = self.format(record)
text = textwrap.fill(msg, width=48)
text += "\r\n" * 4
prn.text(text)
prn.cut()
class Bureau(object):
""" Bureau is a base class that implements standard methods for
inter-bureau communication, IO, registration and some convenient stuff
@ -85,14 +98,22 @@ class Bureau(object):
os.mkdir(basepath)
os.chdir(basepath)
self.load_config()
# setup log file
# TODO: make log level globally and bureau-specific via config
# TODO: custom handler to print errors to small printer
if hasattr(self.config, "debug"):
if self.config.debug:
log_level = logging.DEBUG
else:
log_level = logging.ERROR
else:
log_level = logging.ERROR
logfile = os.path.join(basepath, self.prefix + ".log")
logging.basicConfig(filename=logfile, level=logging.DEBUG)
logging.basicConfig(filename=logfile, level=log_level)
self.log = logging.getLogger(self.prefix)
self.load_config()
log_printer = LogPrinter()
self.log.addHandler(log_printer)
# setup a dir to store files and data
self.datadir = os.path.join(basepath, self.prefix)

Loading…
Cancel
Save