Portál AbcLinuxu, 13. července 2025 14:30


Dotaz: logging v Pythonu

16.10.2015 11:36 Pat1 | skóre: 15
logging v Pythonu
Přečteno: 342×
Odpovědět | Admin
Pouzivam v pythonu modul logging a rad bych dosahl hierarchickeho oznacovani logu z jednotlivych modulu.

Nyni pouzivam knihovnu nasledujicim zpusobem:

#app1.py

import logging

logger = logging.getLogger('app1')

#mod1.py

import logging

logger = logging.getLogger('app1.mod1')

S vystupem jsem nyni spokojen, rad bych ale pridal druhou aplikaci vyuzivajici stejny modul a tady narazim na problem. Rad bych aby se prvni cast parametru v getLogger menila podle toho z jake aplikace je modul importovan. Nejak se mi nedari zjistit jak na to. Existuje nejaky cisty zpusob jak dosahnout pozadovaneho vysledku?

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Pat1 (tazatel))
16.10.2015 13:25 Sajfi | skóre: 8
Rozbalit Rozbalit vše Re: logging v Pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Cesty jsou různé, pokud chceš co nejméně měnit stávající kód, řešil bych to přes Formatter:

import logging

# ----- inicializace logovani pri startu app -----

formatter = logging.Formatter("%(asctime)s %(levelname)s app1.%(name)s %(message)s")

console_handler = logging.StreamHandler()
console_handler.level = logging.INFO
console_handler.formatter = formatter

root = logging.getLogger()
root.addHandler(console_handler)
root.level = logging.INFO

# ----- kdekoliv v app -----

logging.info("foo")

logger1 = logging.getLogger("logger1")
logger1.info("baz")

logger2 = logging.getLogger("logger2")
logger2.info("bar")
A na inicializaci logování je logging.config.dictConfig nebo logging.config.fileConfig, takže by odpadnul kód v ukázce a stačilo by dvě řádky:

import logging

logging.lileConfig('/soubor/s/konfiguraci.ini')
Na stávající kód nebude pořeba sáhnout a vše bude jen konfigurace aplikace a její inicializace při startu.
17.10.2015 10:44 Pat1 | skóre: 15
Rozbalit Rozbalit vše Re: logging v Pythonu
Napsat jmeno aplikace rovnou do formatteru, jak jednoduche (: Je to jina cesta nez nad kterou jsem premyslel, ale je to presne ono. Diky

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.