feature: add a /debug command to change logging level dynamically

And changing the path too
This commit is contained in:
mathieui 2021-04-11 18:50:15 +02:00
parent 57cd999f70
commit 1640a90a63
4 changed files with 25 additions and 4 deletions

View file

@ -34,6 +34,12 @@ These commands work in *any* tab.
available commands. If it has a valid command as an argument, this command
will show the usage and the help for the given command.
/debug
**Usage:** ``/debug [filename]
Reset logging and enable debugging to ``[filename]``. If the filename
is empty, debug logging will be disabled.
/join
**Usage:** ``/join [room_name][@server][/nick] [password]``

View file

@ -679,7 +679,7 @@ def post_logging_setup():
LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': True,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': '%(asctime)s %(levelname)s:%(module)s:%(message)s'

View file

@ -442,4 +442,11 @@ def get_commands(commands: CommandCore, completions: CompletionCore, plugin_mana
"shortdesc": "Reload the config. You can achieve the same by "
"sending SIGUSR1 to poezio.",
},
{
"name": "debug",
"func": commands.debug,
"usage": "[debug_filename]",
"shortdesc": "Enable or disable debug logging according to the "
"presence of [debug_filename].",
},
]

View file

@ -14,9 +14,7 @@ from slixmpp.xmlstream.stanzabase import StanzaBase
from slixmpp.xmlstream.handler import Callback
from slixmpp.xmlstream.matcher import StanzaPath
from poezio import common
from poezio import tabs
from poezio import multiuserchat as muc
from poezio import common, config as config_module, tabs, multiuserchat as muc
from poezio.bookmarks import Bookmark
from poezio.config import config, DEFAULT_CONFIG
from poezio.contact import Contact, Resource
@ -1356,6 +1354,16 @@ class CommandCore:
"""
self.core.reload_config()
@command_args_parser.raw
def debug(self, args):
"""/debug [filename]"""
if not args.strip():
config_module.setup_logging('')
self.core.information('Debug logging disabled!', 'Info')
elif args:
config_module.setup_logging(args)
self.core.information(f'Debug logging to {args} enabled!', 'Info')
def dumb_callback(*args, **kwargs):
"mock callback"