logging — protokolování událostí¶
Tento modul poskytuje odlehčenou podmnožinu standardního balíčku logging z jazyka Python přizpůsobenou pro MicroPython. Podporuje úrovňové protokolování prostřednictvím hierarchicky pojmenovaných objektů Logger, malou sadu obslužných rutin (StreamHandler, FileHandler), formátování ve stylu printf přes Formatter a funkce na úrovni modulu odpovídající těm, které pracují s kořenovým loggerem.
Modul dostatečně přesně kopíruje známé CPython API, takže jednoduché aplikace napsané pro standardní knihovnu by měly fungovat beze změn. Filtry, zamykání mezi více procesy, formát konfiguračního souboru a většina tříd obslužných rutin nejsou k dispozici.
Konstanty úrovní¶
Funkce¶
- logging.getLogger(name: str | None = None) Logger¶
Vrátí
Loggerregistrovaný pod jménem name a při prvním použití jej vytvoří. Pokud je nameNone, vrátí se kořenový logger. První volání sname="root"(nebo s nenastaveným name) implicitně vyvolábasicConfig, aby připojilo výchozíStreamHandlerzapisující dosys.stderr.
- logging.log(level: int, msg: str, *args) None¶
Zaprotokoluje zprávu na úrovni level v kořenovém loggeru. args se interpolují do msg pomocí formátování
%ve stylu printf; jediný argument typu dict se použije jako mapování.
- logging.exception(msg: str, *args, exc_info: bool | BaseException = True) None¶
Ekvivalent
getLogger().exception(msg, *args, exc_info=exc_info). Zaprotokoluje zprávu na úrovniERRORa navíc zformátuje traceback aktivní výjimky, je-li exc_info pravdivé. Pokud je exc_info samo o soběBaseException, použije se traceback této výjimky; jinak se, je-li to možné, použijesys.exc_info().
- logging.shutdown() None¶
Zavře každou obslužnou rutinu připojenou ke každému známému loggeru a zapomene loggery. Automaticky se registruje prostřednictvím
sys.atexit, je-li tento hook k dispozici.
- logging.addLevelName(level: int, name: str) None¶
Přiřadí textové jméno name číselné úrovni level, aby je
Formattermohl vykreslit pomocí%(levelname)s.
- logging.basicConfig(filename: str | None = None, filemode: str = 'a', format: str | None = None, datefmt: str | None = None, level: int = WARNING, stream=None, encoding: str = 'UTF-8', force: bool = False) None¶
Nakonfiguruje kořenový logger s jedinou obslužnou rutinou.
Je-li zadán filename, vytvoří se
FileHandlerpoužívající filemode a encoding; jinak se použijeStreamHandlerzapisující do stream (výchozísys.stderr).format a datefmt se předají novému objektu
Formatter.level nastaví úroveň obslužné rutiny i úroveň kořenového loggeru.
Pokud kořenový logger již má obslužné rutiny, je tato funkce bez efektu, ledaže je force
True, v kterémžto případě se stávající obslužné rutiny zavřou a nahradí.
Třídy¶
- class logging.Logger(name: str, level: int = NOTSET)¶
Pojmenovaný logger. Loggery vytvářejte přes
getLogger, nikoli přímo, abygetLoggermohl pro stejné jméno vracet stejnou instanci.- handlers: list¶
Seznam instancí
Handlerpřipojených k tomuto loggeru. Je-li prázdný, zprávy se odesílají obslužným rutinám kořenového loggeru.
- isEnabledFor(level: int) bool¶
Vrátí
True, pokud by zpráva úrovně level byla tímto loggerem zpracována.
- getEffectiveLevel() int¶
Vrátí první nenulovou z hodnot: úroveň tohoto loggeru, úroveň kořenového loggeru nebo
WARNING.
- log(level: int, msg: str, *args) None¶
Zaprotokoluje msg na úrovni level. args se interpolují do msg operátorem
%; je-li první poziční argument dict, použije se jako mapování.
- class logging.Handler(level: int = NOTSET)¶
Základní třída pro všechny obslužné rutiny. Podtřídy implementují
emit().- close() None¶
Uvolní prostředky držené obslužnou rutinou. Volá se z
shutdowna zFileHandler, když je zavírána.
- class logging.StreamHandler(stream=None)¶
Obslužná rutina, která zapisuje zformátované záznamy následované
self.terminator(ve výchozím stavu"\n") do stream. stream je ve výchozím stavusys.stderr.- stream¶
Cílový objekt streamu.
- class logging.FileHandler(filename: str, mode: str = 'a', encoding: str = 'UTF-8')¶
Podtřída
StreamHandler, která otevře filename s daným mode a encoding a zapisuje do něj zformátované záznamy. Podkladový soubor se zavře přiclose().
- class logging.Formatter(fmt: str | None = None, datefmt: str | None = None)¶
Vykresluje instance
LogRecorddo řetězců.fmt je šablona ve stylu printf. Rozpoznávané klíče jsou
%(name)s,%(message)s,%(msecs)d,%(asctime)sa%(levelname)s. Není-li nastaven, použije se výchozí"%(levelname)s:%(name)s:%(message)s".datefmt je šablona
time.strftimepoužitá k vykreslení%(asctime)s. Výchozí hodnota je"%Y-%m-%d %H:%M:%S".- formatTime(datefmt: str, record: LogRecord) str | None¶
Zformátuje
record.ctpomocítime.strftimea datefmt. Na platformách, kdetime.strftimenení k dispozici, vrátíNone.
- format(record: LogRecord) str¶
Vykreslí record. Pokud šablona používá
asctime, nejprve se vyvoláformatTime(), aby naplnilarecord.asctime.