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ď č. 1Protokolovanie nie je nakonfigurované v čase importovania súboru s nastaveniami, takže protokolovanie nemôžete robiť z úrovne modulu v ňom. Poradie je
- Django importuje nastavenia z vášho
staging_settings.py
- Django načíta diktovanie LOGGING s konfiguráciou z importovaného modulu
- Konfigurácie Django
logging
s konfiguráciou - 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ť.