Use logger.isEnabledFor(logging.DEBUG) instead of logger.level <= logging.DEBUG for debug guards
Maintainer antworten meist innerhalb von 5 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 55/100
Rechercherichtung
Beginne mit der Suche nach logger.level <= logging.DEBUG unter slack_sdk/ und prüfe anschließend die Socket Mode-Beispiele in slack_sdk/socket_mode/, einschließlich builtin/client.py und client.py. Entscheide, ob die Änderung nur für Socket Mode oder für alle etwa 88 Vorkommen gilt, und behalte Guards nur dort bei, wo sie aufwendige Arbeit vermeiden; als erledigt gilt die Aufgabe, wenn Debug-Prüfungen effektive Logger-Level verwenden und die Vorkommen im gesamten Projekt konsistent behandelt werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Python
- Sterne
- 4k
- Forks
- 861
- Ø Merge
- 3 T. 17 Std.
- Gemergte PRs (30 T.)
- 11
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus slackapi/python-slack-sdk
-
auto-triage-stale needs info server-side-issue
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
slackapi/python-slack-sdk#1961 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 5 Tagen
-
auto-triage-skip discussion
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
slackapi/python-slack-sdk#1940 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 5 Tagen
-
chat_postMessage silently forwards thread_id to the API, so a threaded reply posts to the channelOffenauto-triage-skip enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
slackapi/python-slack-sdk#1923 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 5 Tagen
-
files_upload_v2 should respect the retry handlersEvtl. vergeben @DSeaStar hat das vor 61 Tagen übernommen. Offenauto-triage-skip bug python web-client
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 52/100
slackapi/python-slack-sdk#1853 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 5 Tagen
-
auto-triage-skip bug server-side-issue
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
slackapi/python-slack-sdk#1847 · 5 Kommentare ·
Maintainer antworten meist innerhalb von 5 Tagen
Alle Issues in slackapi/python-slack-sdk
Ähnliche Issues
-
customer-reported question
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Azure/azure-sdk-for-python#49548 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
btclib-org/btclib-wallet#409 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Phase 2 PSA Capability & Career Profile
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
bcgov/digital-journeys#2310 ·
-
bug good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
fastmachinelearning/hls4ml#1582 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Sort modelsOffenenhancement good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 1 Tag