From 86fc1057f7995dc1034770e7041b01305f3d8b8c Mon Sep 17 00:00:00 2001 From: Eric Callahan Date: Fri, 7 Oct 2022 05:28:06 -0400 Subject: [PATCH] server: deprecate debug logging option Add a debug option to the command line to enable debug features. Signed-off-by: Eric Callahan --- moonraker/app.py | 10 +++-- .../components/file_manager/file_manager.py | 3 +- moonraker/components/machine.py | 4 ++ moonraker/components/simplyprint.py | 4 +- .../components/update_manager/app_deploy.py | 3 +- .../components/update_manager/git_deploy.py | 6 +-- .../update_manager/update_manager.py | 3 -- moonraker/moonraker.py | 38 ++++++++++++++----- 8 files changed, 45 insertions(+), 26 deletions(-) diff --git a/moonraker/app.py b/moonraker/app.py index f868012..69374a6 100644 --- a/moonraker/app.py +++ b/moonraker/app.py @@ -194,9 +194,8 @@ class MoonrakerApp: mimetypes.add_type('text/plain', '.gcode') mimetypes.add_type('text/plain', '.cfg') - self.debug = self.server.is_debug_enabled() app_args: Dict[str, Any] = { - 'serve_traceback': self.debug, + 'serve_traceback': self.server.is_verbose_enabled(), 'websocket_ping_interval': 10, 'websocket_ping_timeout': 30, 'server': self.server, @@ -275,7 +274,10 @@ class MoonrakerApp: def log_request(self, handler: tornado.web.RequestHandler) -> None: status_code = handler.get_status() - if not self.debug and status_code in [200, 204, 206, 304]: + if ( + not self.server.is_verbose_enabled() + and status_code in [200, 204, 206, 304] + ): # don't log successful requests in release mode return if status_code < 400: @@ -620,7 +622,7 @@ class DynamicRequestHandler(AuthorizedRequestHandler): return args def _log_debug(self, header: str, args: Any) -> None: - if self.server.is_debug_enabled(): + if self.server.is_verbose_enabled(): resp = args if isinstance(args, dict): if ( diff --git a/moonraker/components/file_manager/file_manager.py b/moonraker/components/file_manager/file_manager.py index f561ebb..3e5704a 100644 --- a/moonraker/components/file_manager/file_manager.py +++ b/moonraker/components/file_manager/file_manager.py @@ -1162,7 +1162,6 @@ class INotifyHandler: ) -> None: self.server = config.get_server() self.event_loop = self.server.get_event_loop() - self.debug_enabled = self.server.is_debug_enabled() self.enable_warn = config.getboolean("enable_inotify_warnings", True) self.file_manager = file_manager self.gcode_metadata = gcode_metadata @@ -1306,7 +1305,7 @@ class INotifyHandler: return True def log_nodes(self) -> None: - if self.debug_enabled: + if self.server.is_verbose_enabled(): debug_msg = f"Inotify Watches After Scan:" for wdesc, node in self.watched_nodes.items(): wdir = node.get_path() diff --git a/moonraker/components/machine.py b/moonraker/components/machine.py index 8579e0d..b711f2f 100644 --- a/moonraker/components/machine.py +++ b/moonraker/components/machine.py @@ -1521,6 +1521,10 @@ class InstallValidator: key_dest = certs_path.joinpath("moonraker.key") self._link_data_file(key_dest, ssl_key) cfg_source.remove_option("server", "ssl_key_path") + + # Remove deprecated debug option + if server_cfg.has_option("enable_debug_logging"): + cfg_source.remove_option("server", "enable_debug_logging") except Exception: cfg_source.cancel() raise diff --git a/moonraker/components/simplyprint.py b/moonraker/components/simplyprint.py index 94ea751..5f7fff7 100644 --- a/moonraker/components/simplyprint.py +++ b/moonraker/components/simplyprint.py @@ -1404,7 +1404,7 @@ class WebcamStream: except asyncio.CancelledError: raise except Exception as e: - if not self.server.is_debug_enabled(): + if not self.server.is_verbose_enabled(): return logging.exception("SimplyPrint WebCam Stream Error") @@ -1628,7 +1628,7 @@ class ProtoLogger: def __init__(self, config: ConfigHelper) -> None: server = config.get_server() self._logger: Optional[logging.Logger] = None - if not config["server"].getboolean("enable_debug_logging", False): + if not server.is_verbose_enabled(): return fm: FileManager = server.lookup_component("file_manager") log_root = fm.get_directory("logs") diff --git a/moonraker/components/update_manager/app_deploy.py b/moonraker/components/update_manager/app_deploy.py index 4231b89..bd6616d 100644 --- a/moonraker/components/update_manager/app_deploy.py +++ b/moonraker/components/update_manager/app_deploy.py @@ -41,7 +41,6 @@ class AppDeploy(BaseDeploy): def __init__(self, config: ConfigHelper, cmd_helper: CommandHelper) -> None: super().__init__(config, cmd_helper, prefix="Application") self.config = config - self.debug = self.cmd_helper.is_debug_enabled() type_choices = list(TYPE_TO_CHANNEL.keys()) self.type = config.get('type').lower() if self.type not in type_choices: @@ -224,7 +223,7 @@ class AppDeploy(BaseDeploy): def get_update_status(self) -> Dict[str, Any]: return { 'channel': self.channel, - 'debug_enabled': self.debug, + 'debug_enabled': self.server.is_debug_enabled(), 'need_channel_update': self.need_channel_update, 'is_valid': self._is_valid, 'configured_type': self.type, diff --git a/moonraker/components/update_manager/git_deploy.py b/moonraker/components/update_manager/git_deploy.py index dc9f571..5305d0b 100644 --- a/moonraker/components/update_manager/git_deploy.py +++ b/moonraker/components/update_manager/git_deploy.py @@ -67,7 +67,7 @@ class GitDeploy(AppDeploy): msgs = '\n'.join(invalids) self.log_info( f"Repo validation checks failed:\n{msgs}") - if self.debug: + if self.server.is_debug_enabled(): self._is_valid = True self.log_info( "Repo debug enabled, overriding validity checks") @@ -402,7 +402,7 @@ class GitRepo: if not detected_origin.endswith(".git"): detected_origin += ".git" if ( - self.cmd_helper.is_debug_enabled() or + self.server.is_debug_enabled() or not detected_origin.startswith("http") or detected_origin == self.origin_url.lower() ): @@ -703,7 +703,7 @@ class GitRepo: f"Git Repo {self.alias}: Cannot perform pull on a " "detached HEAD") cmd = "pull --progress" - if self.cmd_helper.is_debug_enabled(): + if self.server.is_debug_enabled(): cmd = f"{cmd} --rebase" if self.is_beta: cmd = f"{cmd} {self.git_remote} {self.upstream_commit}" diff --git a/moonraker/components/update_manager/update_manager.py b/moonraker/components/update_manager/update_manager.py index 32c0817..a3223cc 100644 --- a/moonraker/components/update_manager/update_manager.py +++ b/moonraker/components/update_manager/update_manager.py @@ -506,9 +506,6 @@ class CommandHelper: def get_umdb(self) -> NamespaceWrapper: return self.umdb - def is_debug_enabled(self) -> bool: - return self.debug_enabled - def set_update_info(self, app: str, uid: int) -> None: self.cur_update_app = app self.cur_update_id = uid diff --git a/moonraker/moonraker.py b/moonraker/moonraker.py index fb9b86f..f8bf680 100755 --- a/moonraker/moonraker.py +++ b/moonraker/moonraker.py @@ -64,6 +64,11 @@ class Server: self.event_loop = event_loop self.file_logger = file_logger self.app_args = args + self.events: Dict[str, List[FlexCallback]] = {} + self.components: Dict[str, Any] = {} + self.failed_components: List[str] = [] + self.warnings: Dict[str, str] = {} + self.config = config = self._parse_config() self.host: str = config.get('host', "0.0.0.0") self.port: int = config.getint('port', 7125) @@ -72,17 +77,12 @@ class Server: self.server_running: bool = False # Configure Debug Logging - self.debug = config.getboolean('enable_debug_logging', False) - asyncio_debug = config.getboolean('enable_asyncio_debug', False) - log_level = logging.DEBUG if self.debug else logging.INFO + config.getboolean('enable_debug_logging', False, deprecate=True) + self.debug = args["debug"] + log_level = logging.DEBUG if args["verbose"] else logging.INFO logging.getLogger().setLevel(log_level) - self.event_loop.set_debug(asyncio_debug) + self.event_loop.set_debug(args["asyncio_debug"]) - # Event initialization - self.events: Dict[str, List[FlexCallback]] = {} - self.components: Dict[str, Any] = {} - self.failed_components: List[str] = [] - self.warnings: Dict[str, str] = {} self.klippy_connection = KlippyConnection(config) # Tornado Application/Server @@ -125,6 +125,9 @@ class Server: def is_debug_enabled(self) -> bool: return self.debug + def is_verbose_enabled(self) -> bool: + return self.app_args["verbose"] + def _parse_config(self) -> confighelper.ConfigHelper: config = confighelper.get_configuration(self, self.app_args) # log config file @@ -455,7 +458,10 @@ def main(cmd_line_args: argparse.Namespace) -> None: "data_path": str(data_path), "is_default_data_path": cmd_line_args.datapath is None, "config_file": cfg_file, - "startup_warnings": startup_warnings + "startup_warnings": startup_warnings, + "verbose": cmd_line_args.verbose, + "debug": cmd_line_args.debug, + "asyncio_debug": cmd_line_args.asyncio_debug } # Setup Logging @@ -548,4 +554,16 @@ if __name__ == '__main__': parser.add_argument( "-n", "--nologfile", action='store_true', help="disable logging to a file") + parser.add_argument( + "-v", "--verbose", action="store_true", + help="Enable verbose logging" + ) + parser.add_argument( + "-g", "--debug", action="store_true", + help="Enable Moonraker debug features" + ) + parser.add_argument( + "-o", "--asyncio-debug", action="store_true", + help="Enable asyncio debug flag" + ) main(parser.parse_args())