Page MenuHomePhabricator
Paste P32319

pywikibot millisecond logging and raw request log
ActivePublic

Authored by tstarling on Aug 9 2022, 4:21 AM.
Tags
None
Referenced Files
F35412348: pywikibot millisecond logging and raw request log
Aug 9 2022, 4:21 AM
Subscribers
None
diff --git a/pywikibot/bot.py b/pywikibot/bot.py
index 9720398a4..a64cc2d74 100644
--- a/pywikibot/bot.py
+++ b/pywikibot/bot.py
@@ -434,8 +434,9 @@ def init_handlers() -> None:
form = LoggingFormatter(
fmt='%(asctime)s %(caller_file)18s, %(caller_line)4s '
'in %(caller_name)18s: %(levelname)-8s %(message)s',
- datefmt='%Y-%m-%d %H:%M:%S'
+ datefmt=None
)
+ form.default_msec_format = "%s.%03d"
file_handler.setFormatter(form)
root_logger.addHandler(file_handler)
# Turn on debugging for each component requested by user
diff --git a/pywikibot/comms/http.py b/pywikibot/comms/http.py
index c5c4b11ab..0c9716069 100644
--- a/pywikibot/comms/http.py
+++ b/pywikibot/comms/http.py
@@ -74,6 +74,19 @@ else:
session = requests.Session()
session.cookies = cookie_jar
+def log_response(response, *args, **kwargs):
+ request = response.request
+ lines = []
+ lines.append('HTTP request {} {}'.format(request.method, request.url))
+ lines.append('Request headers:')
+ for k, v in request.headers.items():
+ lines.append(k + ': ' + v)
+ lines.append('Response headers:')
+ for k, v in response.headers.items():
+ lines.append(k + ': ' + v)
+ debug("\n".join(lines))
+
+session.hooks['response'].append(log_response)
# Prepare flush on quit
def flush() -> None: # pragma: no cover