Skip to content

Commit 84ff22d

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 84ff22d

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

common

readthedocs/core/logs.py

Lines changed: 11 additions & 10 deletions
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

Lines changed: 15 additions & 2 deletions
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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ 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+
'django.server': {
83+
'handlers': ['null'],
84+
'propagate': False,
85+
},
8186
# Disable S3 logging
8287
'boto3': {
8388
'handlers': ['null'],

0 commit comments

Comments
 (0)