Virtual printer now has its own serial.log

This commit is contained in:
Gina Häußge 2015-08-13 10:55:45 +02:00
parent 963d590728
commit 91539624df
2 changed files with 23 additions and 3 deletions

View file

@ -16,8 +16,15 @@ class VirtualPrinterPlugin(octoprint.plugin.SettingsPlugin):
if not self._settings.global_get_boolean(["devel", "virtualPrinter", "enabled"]):
return None
import logging
import logging.handlers
seriallog_handler = logging.handlers.RotatingFileHandler(self._settings.get_plugin_logfile_path(postfix="serial"), maxBytes=2*1024*1024)
seriallog_handler.setFormatter(logging.Formatter("%(asctime)s %(message)s"))
seriallog_handler.setLevel(logging.DEBUG)
from . import virtual
serial_obj = virtual.VirtualPrinter(read_timeout=float(read_timeout))
serial_obj = virtual.VirtualPrinter(seriallog_handler=seriallog_handler, read_timeout=float(read_timeout))
return serial_obj
__plugin_name__ = "Virtual Printer"

View file

@ -16,17 +16,28 @@ from serial import SerialTimeoutException
from octoprint.settings import settings
from octoprint.plugin import plugin_manager
class VirtualPrinter():
class VirtualPrinter(object):
command_regex = re.compile("[GM]\d+")
sleep_regex = re.compile("sleep (\d+)")
sleep_after_regex = re.compile("sleep_after ([GM]\d+) (\d+)")
sleep_after_next_regex = re.compile("sleep_after_next ([GM]\d+) (\d+)")
custom_action_regex = re.compile("action_custom ([a-zA-Z0-9_]+)(\s+.*)?")
def __init__(self, read_timeout=5.0, write_timeout=10.0):
def __init__(self, seriallog_handler=None, read_timeout=5.0, write_timeout=10.0):
import logging
self._logger = logging.getLogger("octoprint.plugin.virtual_printer.VirtualPrinter")
self._seriallog = logging.getLogger("octoprint.plugin.virtual_printer.VirtualPrinter.serial")
self._seriallog.setLevel(logging.CRITICAL)
self._seriallog.propagate = False
if seriallog_handler is not None:
import logging.handlers
self._seriallog.addHandler(seriallog_handler)
self._seriallog.setLevel(logging.INFO)
self._seriallog.info("-"*78)
self._read_timeout = read_timeout
self._write_timeout = write_timeout
@ -664,6 +675,7 @@ class VirtualPrinter():
return
try:
self.incoming.put(data, timeout=self._write_timeout)
self._seriallog.info("<<< {}".format(data.strip()))
except Queue.Full:
self._logger.info("Incoming queue is full, raising SerialTimeoutException")
raise SerialTimeoutException()
@ -675,6 +687,7 @@ class VirtualPrinter():
try:
line = self.outgoing.get(timeout=self._read_timeout)
time.sleep(settings().getFloat(["devel", "virtualPrinter", "throttle"]))
self._seriallog.info(">>> {}".format(line.strip()))
return line
except Queue.Empty:
return ""