Use logger.isEnabledFor(logging.DEBUG) instead of logger.level <= logging.DEBUG for debug guards
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 55/100
Línea de trabajo
Empieza buscando logger.level <= logging.DEBUG en slack_sdk/ y luego inspecciona los ejemplos de Socket Mode en slack_sdk/socket_mode/, incluidos builtin/client.py y client.py. Decide si el cambio se aplica solo a Socket Mode o a las aproximadamente 88 apariciones; se considera terminado cuando las comprobaciones de depuración usan los niveles efectivos del logger y las apariciones en todo el proyecto se han tratado de forma coherente, conservando las guards solo cuando evitan trabajo costoso.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Throughout Socket Mode, debug logs are guarded like this:
if self.logger.level <= logging.DEBUG:
self.logger.debug(f"... {expensive_call()} ...")
The guard exists to avoid building the message string when debug is off (the f-string argument is evaluated eagerly, before debug() can no-op it). That's a valid goal — e.g. builtin/client.py calls debug_redacted_message_string(message), and client.py calls self.message_queue.qsize() inside the message.
But logger.level is the wrong check: it's only the level explicitly set on that exact logger, defaulting to NOTSET (0). These loggers are created with logging.getLogger(__name__) and setLevel() is never called on them. So with the usual logging.basicConfig(level=logging.INFO) (which configures the root logger), logger.level stays 0, 0 <= 10 is always True, and the guard passes anyway — the expensive string still gets built. The optimization silently does nothing in the most common setup.
Suggested change
Replace:
if self.logger.level <= logging.DEBUG:
with:
if self.logger.isEnabledFor(logging.DEBUG):
isEnabledFor() uses the effective level (walking up the logger hierarchy via getEffectiveLevel()), so it correctly short-circuits when logging is configured at the root/parent — which is what the guard was meant to do.
Where the guarded message is cheap (e.g. it only interpolates an already-computed value), the guard could simply be dropped instead.
Scope
Spotted in slack_sdk/socket_mode/, but the same logger.level <= logging.DEBUG idiom appears ~88 times across ~23 files in slack_sdk/ (webhook, scim, web, audit_logs, rtm, oauth, …). isEnabledFor is currently used nowhere. Worth deciding whether to fix Socket Mode only or apply the change project-wide.
- Lenguaje dominante
- Python
- Estrellas
- 4k
- Forks
- 857
- Merge medio
- 22 h 21 min
- PR fusionados (30 d)
- 16
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de slackapi/python-slack-sdk
-
needs info server-side-issue
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
slackapi/python-slack-sdk#1961 · 3 comentarios ·
-
auto-triage-skip discussion
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
slackapi/python-slack-sdk#1940 · 2 comentarios ·
-
chat_postMessage silently forwards thread_id to the API, so a threaded reply posts to the channel Abiertoauto-triage-skip enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
slackapi/python-slack-sdk#1923 · 2 comentarios ·
-
SocketModeClient.connect() retries forever against a permanently closed aiohttp ClientSession Abiertoauto-triage-skip bug socket-mode
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
slackapi/python-slack-sdk#1922 · 2 comentarios ·
-
auto-triage-skip bug python web-client
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
slackapi/python-slack-sdk#1853 · 2 comentarios ·
Todos los issues de slackapi/python-slack-sdk
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
zostera/django-bootstrap4#894 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
use-agent-os/agent-os#3276 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
NousResearch/hermes-agent#117848 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
zilliztech/memsearch#759 ·