Skip to content

Commit 9b261ab

Browse files
committed
Make logs from logging.getLogger to look better
Logs coming from `logging.getLogger` (from other applications) have the same structure that the ones logged by us via `structlog`.
1 parent 1110839 commit 9b261ab

File tree

4 files changed

+33
-13
lines changed

4 files changed

+33
-13
lines changed

common

readthedocs/core/logs.py

+11-10
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,21 @@ def __call__(self, logger, method_name, event_dict):
6969
event_dict.update(output)
7070
return event_dict
7171

72+
shared_processors = [
73+
structlog.processors.TimeStamper(fmt='iso'),
74+
structlog.stdlib.add_logger_name,
75+
structlog.stdlib.add_log_level,
76+
structlog.stdlib.PositionalArgumentsFormatter(),
77+
structlog.processors.StackInfoRenderer(),
78+
structlog.processors.UnicodeDecoder(),
79+
]
7280

7381
structlog.configure(
74-
processors=[
82+
processors=list([
7583
structlog.stdlib.filter_by_level,
76-
structlog.processors.TimeStamper(fmt='iso'),
77-
structlog.stdlib.add_logger_name,
78-
structlog.stdlib.add_log_level,
79-
structlog.stdlib.PositionalArgumentsFormatter(),
80-
structlog.processors.StackInfoRenderer(),
81-
# Remove `format_exc_info` from your processor chain if you want pretty exceptions.
82-
# structlog.processors.format_exc_info,
83-
structlog.processors.UnicodeDecoder(),
84+
*shared_processors,
8485
structlog.stdlib.ProcessorFormatter.wrap_for_formatter,
85-
],
86+
]),
8687
context_class=structlog.threadlocal.wrap_dict(dict),
8788
logger_factory=structlog.stdlib.LoggerFactory(),
8889
wrapper_class=structlog.stdlib.BoundLogger,

readthedocs/settings/base.py

+15-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from celery.schedules import crontab
1010

11+
from readthedocs.core.logs import shared_processors
1112
from readthedocs.core.settings import Settings
1213
from readthedocs.projects.constants import CELERY_LOW, CELERY_MEDIUM, CELERY_HIGH
1314

@@ -803,11 +804,23 @@ def DOCKER_LIMITS(self):
803804
# structlog
804805
"plain_console": {
805806
"()": structlog.stdlib.ProcessorFormatter,
806-
"processor": structlog.dev.ConsoleRenderer(),
807+
"processors": [
808+
structlog.stdlib.ProcessorFormatter.remove_processors_meta,
809+
structlog.dev.ConsoleRenderer(),
810+
],
811+
# Allows to add extra data to log entries generated via ``logging`` module
812+
# See https://www.structlog.org/en/stable/standard-library.html#rendering-using-structlog-based-formatters-within-logging
813+
"foreign_pre_chain": shared_processors,
807814
},
808815
"key_value": {
809816
"()": structlog.stdlib.ProcessorFormatter,
810-
"processor": structlog.processors.KeyValueRenderer(key_order=['timestamp', 'level', 'event', 'logger']),
817+
"processors": [
818+
structlog.stdlib.ProcessorFormatter.remove_processors_meta,
819+
structlog.processors.KeyValueRenderer(key_order=['timestamp', 'level', 'event', 'logger']),
820+
],
821+
# Allows to add extra data to log entries generated via ``logging`` module
822+
# See https://www.structlog.org/en/stable/standard-library.html#rendering-using-structlog-based-formatters-within-logging
823+
"foreign_pre_chain": shared_processors,
811824
},
812825
},
813826
'handlers': {

readthedocs/settings/docker_compose.py

+6
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ def RTD_EMBED_API_EXTERNAL_DOMAINS(self):
7878
def LOGGING(self):
7979
logging = super().LOGGING
8080
logging['loggers'].update({
81+
# Disable Django access requests logging (e.g. GET /path/to/url)
82+
# https://github.com/django/django/blob/ca9872905559026af82000e46cde6f7dedc897b6/django/core/servers/basehttp.py#L24
83+
'django.server': {
84+
'handlers': ['null'],
85+
'propagate': False,
86+
},
8187
# Disable S3 logging
8288
'boto3': {
8389
'handlers': ['null'],

0 commit comments

Comments
 (0)