server: deprecate debug logging option

Add a debug option to the command line to enable
debug features.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2022-10-07 05:28:06 -04:00 committed by Eric Callahan
parent d2cbd1d0a0
commit 86fc1057f7
8 changed files with 45 additions and 26 deletions

View File

@ -194,9 +194,8 @@ class MoonrakerApp:
mimetypes.add_type('text/plain', '.gcode') mimetypes.add_type('text/plain', '.gcode')
mimetypes.add_type('text/plain', '.cfg') mimetypes.add_type('text/plain', '.cfg')
self.debug = self.server.is_debug_enabled()
app_args: Dict[str, Any] = { app_args: Dict[str, Any] = {
'serve_traceback': self.debug, 'serve_traceback': self.server.is_verbose_enabled(),
'websocket_ping_interval': 10, 'websocket_ping_interval': 10,
'websocket_ping_timeout': 30, 'websocket_ping_timeout': 30,
'server': self.server, 'server': self.server,
@ -275,7 +274,10 @@ class MoonrakerApp:
def log_request(self, handler: tornado.web.RequestHandler) -> None: def log_request(self, handler: tornado.web.RequestHandler) -> None:
status_code = handler.get_status() 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 # don't log successful requests in release mode
return return
if status_code < 400: if status_code < 400:
@ -620,7 +622,7 @@ class DynamicRequestHandler(AuthorizedRequestHandler):
return args return args
def _log_debug(self, header: str, args: Any) -> None: def _log_debug(self, header: str, args: Any) -> None:
if self.server.is_debug_enabled(): if self.server.is_verbose_enabled():
resp = args resp = args
if isinstance(args, dict): if isinstance(args, dict):
if ( if (

View File

@ -1162,7 +1162,6 @@ class INotifyHandler:
) -> None: ) -> None:
self.server = config.get_server() self.server = config.get_server()
self.event_loop = self.server.get_event_loop() 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.enable_warn = config.getboolean("enable_inotify_warnings", True)
self.file_manager = file_manager self.file_manager = file_manager
self.gcode_metadata = gcode_metadata self.gcode_metadata = gcode_metadata
@ -1306,7 +1305,7 @@ class INotifyHandler:
return True return True
def log_nodes(self) -> None: def log_nodes(self) -> None:
if self.debug_enabled: if self.server.is_verbose_enabled():
debug_msg = f"Inotify Watches After Scan:" debug_msg = f"Inotify Watches After Scan:"
for wdesc, node in self.watched_nodes.items(): for wdesc, node in self.watched_nodes.items():
wdir = node.get_path() wdir = node.get_path()

View File

@ -1521,6 +1521,10 @@ class InstallValidator:
key_dest = certs_path.joinpath("moonraker.key") key_dest = certs_path.joinpath("moonraker.key")
self._link_data_file(key_dest, ssl_key) self._link_data_file(key_dest, ssl_key)
cfg_source.remove_option("server", "ssl_key_path") 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: except Exception:
cfg_source.cancel() cfg_source.cancel()
raise raise

View File

@ -1404,7 +1404,7 @@ class WebcamStream:
except asyncio.CancelledError: except asyncio.CancelledError:
raise raise
except Exception as e: except Exception as e:
if not self.server.is_debug_enabled(): if not self.server.is_verbose_enabled():
return return
logging.exception("SimplyPrint WebCam Stream Error") logging.exception("SimplyPrint WebCam Stream Error")
@ -1628,7 +1628,7 @@ class ProtoLogger:
def __init__(self, config: ConfigHelper) -> None: def __init__(self, config: ConfigHelper) -> None:
server = config.get_server() server = config.get_server()
self._logger: Optional[logging.Logger] = None self._logger: Optional[logging.Logger] = None
if not config["server"].getboolean("enable_debug_logging", False): if not server.is_verbose_enabled():
return return
fm: FileManager = server.lookup_component("file_manager") fm: FileManager = server.lookup_component("file_manager")
log_root = fm.get_directory("logs") log_root = fm.get_directory("logs")

View File

@ -41,7 +41,6 @@ class AppDeploy(BaseDeploy):
def __init__(self, config: ConfigHelper, cmd_helper: CommandHelper) -> None: def __init__(self, config: ConfigHelper, cmd_helper: CommandHelper) -> None:
super().__init__(config, cmd_helper, prefix="Application") super().__init__(config, cmd_helper, prefix="Application")
self.config = config self.config = config
self.debug = self.cmd_helper.is_debug_enabled()
type_choices = list(TYPE_TO_CHANNEL.keys()) type_choices = list(TYPE_TO_CHANNEL.keys())
self.type = config.get('type').lower() self.type = config.get('type').lower()
if self.type not in type_choices: if self.type not in type_choices:
@ -224,7 +223,7 @@ class AppDeploy(BaseDeploy):
def get_update_status(self) -> Dict[str, Any]: def get_update_status(self) -> Dict[str, Any]:
return { return {
'channel': self.channel, 'channel': self.channel,
'debug_enabled': self.debug, 'debug_enabled': self.server.is_debug_enabled(),
'need_channel_update': self.need_channel_update, 'need_channel_update': self.need_channel_update,
'is_valid': self._is_valid, 'is_valid': self._is_valid,
'configured_type': self.type, 'configured_type': self.type,

View File

@ -67,7 +67,7 @@ class GitDeploy(AppDeploy):
msgs = '\n'.join(invalids) msgs = '\n'.join(invalids)
self.log_info( self.log_info(
f"Repo validation checks failed:\n{msgs}") f"Repo validation checks failed:\n{msgs}")
if self.debug: if self.server.is_debug_enabled():
self._is_valid = True self._is_valid = True
self.log_info( self.log_info(
"Repo debug enabled, overriding validity checks") "Repo debug enabled, overriding validity checks")
@ -402,7 +402,7 @@ class GitRepo:
if not detected_origin.endswith(".git"): if not detected_origin.endswith(".git"):
detected_origin += ".git" detected_origin += ".git"
if ( if (
self.cmd_helper.is_debug_enabled() or self.server.is_debug_enabled() or
not detected_origin.startswith("http") or not detected_origin.startswith("http") or
detected_origin == self.origin_url.lower() detected_origin == self.origin_url.lower()
): ):
@ -703,7 +703,7 @@ class GitRepo:
f"Git Repo {self.alias}: Cannot perform pull on a " f"Git Repo {self.alias}: Cannot perform pull on a "
"detached HEAD") "detached HEAD")
cmd = "pull --progress" cmd = "pull --progress"
if self.cmd_helper.is_debug_enabled(): if self.server.is_debug_enabled():
cmd = f"{cmd} --rebase" cmd = f"{cmd} --rebase"
if self.is_beta: if self.is_beta:
cmd = f"{cmd} {self.git_remote} {self.upstream_commit}" cmd = f"{cmd} {self.git_remote} {self.upstream_commit}"

View File

@ -506,9 +506,6 @@ class CommandHelper:
def get_umdb(self) -> NamespaceWrapper: def get_umdb(self) -> NamespaceWrapper:
return self.umdb return self.umdb
def is_debug_enabled(self) -> bool:
return self.debug_enabled
def set_update_info(self, app: str, uid: int) -> None: def set_update_info(self, app: str, uid: int) -> None:
self.cur_update_app = app self.cur_update_app = app
self.cur_update_id = uid self.cur_update_id = uid

View File

@ -64,6 +64,11 @@ class Server:
self.event_loop = event_loop self.event_loop = event_loop
self.file_logger = file_logger self.file_logger = file_logger
self.app_args = args 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.config = config = self._parse_config()
self.host: str = config.get('host', "0.0.0.0") self.host: str = config.get('host', "0.0.0.0")
self.port: int = config.getint('port', 7125) self.port: int = config.getint('port', 7125)
@ -72,17 +77,12 @@ class Server:
self.server_running: bool = False self.server_running: bool = False
# Configure Debug Logging # Configure Debug Logging
self.debug = config.getboolean('enable_debug_logging', False) config.getboolean('enable_debug_logging', False, deprecate=True)
asyncio_debug = config.getboolean('enable_asyncio_debug', False) self.debug = args["debug"]
log_level = logging.DEBUG if self.debug else logging.INFO log_level = logging.DEBUG if args["verbose"] else logging.INFO
logging.getLogger().setLevel(log_level) 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) self.klippy_connection = KlippyConnection(config)
# Tornado Application/Server # Tornado Application/Server
@ -125,6 +125,9 @@ class Server:
def is_debug_enabled(self) -> bool: def is_debug_enabled(self) -> bool:
return self.debug return self.debug
def is_verbose_enabled(self) -> bool:
return self.app_args["verbose"]
def _parse_config(self) -> confighelper.ConfigHelper: def _parse_config(self) -> confighelper.ConfigHelper:
config = confighelper.get_configuration(self, self.app_args) config = confighelper.get_configuration(self, self.app_args)
# log config file # log config file
@ -455,7 +458,10 @@ def main(cmd_line_args: argparse.Namespace) -> None:
"data_path": str(data_path), "data_path": str(data_path),
"is_default_data_path": cmd_line_args.datapath is None, "is_default_data_path": cmd_line_args.datapath is None,
"config_file": cfg_file, "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 # Setup Logging
@ -548,4 +554,16 @@ if __name__ == '__main__':
parser.add_argument( parser.add_argument(
"-n", "--nologfile", action='store_true', "-n", "--nologfile", action='store_true',
help="disable logging to a file") 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()) main(parser.parse_args())