diff --git a/octoprint/server.py b/octoprint/server.py index 88e43f7..b62511f 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -517,7 +517,8 @@ def getSettings(): "baudrate": connectionOptions["baudratePreference"], "portOptions": connectionOptions["ports"], "baudrateOptions": connectionOptions["baudrates"], - "autoconnect": s.getBoolean(["serial", "autoconnect"]) + "autoconnect": s.getBoolean(["serial", "autoconnect"]), + "log": s.getBoolean(["serial", "log"]) }, "folder": { "uploads": s.getBaseFolder("uploads"), @@ -576,6 +577,17 @@ def setSettings(): if "port" in data["serial"].keys(): s.set(["serial", "port"], data["serial"]["port"]) if "baudrate" in data["serial"].keys(): s.setInt(["serial", "baudrate"], data["serial"]["baudrate"]) + oldLog = s.getBoolean(["serial", "log"]) + if "log" in data["serial"].keys(): s.setBoolean(["serial", "log"], data["serial"]["log"]) + if oldLog and not s.getBoolean(["serial", "log"]): + # disable debug logging to serial.log + logging.getLogger("SERIAL").debug("Disabling serial logging") + logging.getLogger("SERIAL").setLevel(logging.CRITICAL) + elif not oldLog and s.getBoolean(["serial", "log"]): + # enable debug logging to serial.log + logging.getLogger("SERIAL").setLevel(logging.DEBUG) + logging.getLogger("SERIAL").debug("Enabling serial logging") + if "folder" in data.keys(): if "uploads" in data["folder"].keys(): s.setBaseFolder("uploads", data["folder"]["uploads"]) if "timelapse" in data["folder"].keys(): s.setBaseFolder("timelapse", data["folder"]["timelapse"]) @@ -901,7 +913,12 @@ class Server(): #}, #"octoprint.events": { # "level": "DEBUG" - #} + #}, + "SERIAL": { + "level": "CRITICAL", + "handlers": ["serialFile"], + "propagate": False + } }, "root": { "level": "INFO", @@ -910,11 +927,7 @@ class Server(): } if debug: - config["loggers"]["SERIAL"] = { - "level": "DEBUG", - "handlers": ["serialFile"], - "propagate": False - } + config["loggers"]["root"]["level"] = "DEBUG" logging.config.dictConfig(config) diff --git a/octoprint/settings.py b/octoprint/settings.py index 61f426f..55bdda7 100644 --- a/octoprint/settings.py +++ b/octoprint/settings.py @@ -26,7 +26,8 @@ default_settings = { "serial": { "port": None, "baudrate": None, - "autoconnect": False + "autoconnect": False, + "log": False }, "server": { "host": "0.0.0.0", diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 75f39f7..9556fa8 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -1363,6 +1363,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { self.serial_portOptions = ko.observableArray([]); self.serial_baudrateOptions = ko.observableArray([]); self.serial_autoconnect = ko.observable(undefined); + self.serial_log = ko.observable(undefined); self.folder_uploads = ko.observable(undefined); self.folder_timelapse = ko.observable(undefined); @@ -1420,6 +1421,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { self.serial_portOptions(response.serial.portOptions); self.serial_baudrateOptions(response.serial.baudrateOptions); self.serial_autoconnect(response.serial.autoconnect); + self.serial_log(response.serial.log); self.folder_uploads(response.folder.uploads); self.folder_timelapse(response.folder.timelapse); @@ -1465,7 +1467,8 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { "serial": { "port": self.serial_port(), "baudrate": self.serial_baudrate(), - "autoconnect": self.serial_autoconnect() + "autoconnect": self.serial_autoconnect(), + "log": self.serial_log() }, "folder": { "uploads": self.folder_uploads(), diff --git a/octoprint/templates/settings.jinja2 b/octoprint/templates/settings.jinja2 index 950689a..ee9a827 100644 --- a/octoprint/templates/settings.jinja2 +++ b/octoprint/templates/settings.jinja2 @@ -39,6 +39,13 @@ +
+
+ +
+