/ / Nastavovací modul Django ... nie je možné spustiť záznamník? - python, django, ťažba dreva

Modul nastavenia Django ... nie je možné spustiť záznamník? - python, django, protokolovanie

Používam python logging modul v mojom my_app/views.py súbor bez problémov.

Snažil som sa ho použiť vo vnútri staging_settings.py ktoré používam pre svoju konfiguráciu. Ale správy nikdy nedosiahnu protokol chýb, zatiaľ čo správy z views.py pracovať v poriadku.

môj staging_settings.py:

LOGGING= { ..redacted for space.. } # the logging config-dict

import logging
logger = logging.getLogger(__name__)
logger.debug(F"this is staging_ setup")

Je to len nemožnosť spustiť logger vnútri a setup.py? Myslím, že server v skutočnosti ešte nie je spustený, takže nie je nič, do čo by ho logger nemohol poslať? print() alebo na inú alternatívu hacknutia.

odpovede:

1 pre odpoveď č. 1

Protokolovanie nie je nakonfigurované v čase importovania súboru s nastaveniami, takže protokolovanie nemôžete robiť z úrovne modulu v ňom. Poradie je

  1. Django importuje nastavenia z vášho staging_settings.py
  2. Django načíta diktovanie LOGGING s konfiguráciou z importovaného modulu
  3. Konfigurácie Django logging s konfiguráciou
  4. Keď potom niečo prihlásite, logging potom začne vydávať obsah podľa vašej konfigurácie

Môžete očakávať, že sa prihlásite a získate výstup protokolu v kroku 1.

aktualizácia: AFAIK neexistuje spôsob nezávislý od verzie Djangoo určení, kedy bolo nakonfigurované protokolovanie. Mohli by ste definovať svoj vlastný filter, ktorý nastaví príznak pri vytvorení inštancie, čo by sa stalo počas konfigurácie. To vám napriek tomu nepomôže, ak sa potrebujete prihlásiť z modulu nastavení v kóde na úrovni modulu. Avšak funkcie, ktoré sú definované v module nastavení a ktoré sa nazývajú neskôr (po konfigurácii protokolovania), sa môžu prihlásiť.