logging — tapahtumien lokitus

Tämä moduuli tarjoaa kevyen osajoukon vakio-Pythonin logging-paketista MicroPythonille mukautettuna. Se tukee tasoperusteista lokitusta hierarkkisesti nimettyjen Logger-objektien kautta, pientä joukkoa käsittelijöitä (StreamHandler, FileHandler), printf-tyylistä muotoilua Formatter-luokan avulla sekä moduulitason apufunktioita, jotka vastaavat juurilokittajaan kohdistuvia toimintoja.

Moduuli noudattaa tuttua CPython-API:a riittävän tarkasti, jotta yksinkertaiset vakiokirjastolle kirjoitetut sovellukset toimivat sellaisinaan. Suodattimia, monen prosessin lukitusta, asetustiedostomuotoa ja useimpia käsittelijäluokkia ei tarjota.

Tasovakiot

logging.CRITICAL: int

Numeerinen arvo 50. Käytetään korjaamattomiin virheisiin.

logging.ERROR: int

Numeerinen arvo 40. Käytetään vakaviin ongelmiin.

logging.WARNING: int

Numeerinen arvo 30. Vasta määritetyn juurilokittajan oletustaso.

logging.INFO: int

Numeerinen arvo 20. Käytetään vahvistusviesteihin.

logging.DEBUG: int

Numeerinen arvo 10. Käytetään hienojakoiseen diagnostiseen tulosteeseen.

logging.NOTSET: int

Numeerinen arvo 0. Ilmaisee lokittajan, jolle ei ole määritetty tasoa (efektiivinen taso peritään tällöin juurilokittajalta tai arvosta WARNING).

Funktiot

logging.getLogger(name: str | None = None) Logger

Palauttaa nimellä name rekisteröidyn Logger-objektin ja luo sen ensimmäisellä käyttökerralla. Jos name on None, palautetaan juurilokittaja. Ensimmäinen kutsu arvolla name="root" (tai kun name on asettamatta) kutsuu implisiittisesti funktiota basicConfig, joka liittää oletusarvoisen StreamHandler-käsittelijän kirjoittamaan kohteeseen sys.stderr.

logging.log(level: int, msg: str, *args) None

Kirjaa viesti tasolla level juurilokittajaan. args interpoloidaan viestiin msg printf-tyylisellä %-muotoilulla; yksittäistä sanakirja-argumenttia käytetään kuvauksena.

logging.debug(msg: str, *args) None

Vastaa kutsua getLogger().debug(msg, *args).

logging.info(msg: str, *args) None

Vastaa kutsua getLogger().info(msg, *args).

logging.warning(msg: str, *args) None

Vastaa kutsua getLogger().warning(msg, *args).

logging.error(msg: str, *args) None

Vastaa kutsua getLogger().error(msg, *args).

logging.critical(msg: str, *args) None

Vastaa kutsua getLogger().critical(msg, *args).

logging.exception(msg: str, *args, exc_info: bool | BaseException = True) None

Vastaa kutsua getLogger().exception(msg, *args, exc_info=exc_info). Kirjaa viestin tasolla ERROR ja muotoilee lisäksi aktiivisen poikkeuksen jäljityksen, kun exc_info on tosi. Jos exc_info on itse BaseException, käytetään kyseisen poikkeuksen jäljitystä; muutoin tarkistetaan sys.exc_info(), kun se on saatavilla.

logging.shutdown() None

Sulkee jokaiseen tunnettuun lokittajaan liitetyn käsittelijän ja unohtaa lokittajat. Rekisteröidään automaattisesti kautta sys.atexit, kun kyseinen koukku on saatavilla.

logging.addLevelName(level: int, name: str) None

Yhdistää tekstimuotoisen nimen name numeeriseen tasoon level, jotta Formatter voi esittää sen muodossa %(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

Määrittää juurilokittajan yhdellä käsittelijällä.

Jos filename annetaan, luodaan FileHandler käyttäen arvoja filemode ja encoding; muutoin käytetään StreamHandler-käsittelijää, joka kirjoittaa kohteeseen stream (oletuksena sys.stderr).

format ja datefmt välitetään uudelle Formatter-objektille.

level asettaa sekä käsittelijän tason että juurilokittajan tason.

Jos juurilokittajalla on jo käsittelijöitä, tämä funktio ei tee mitään, ellei force ole True, jolloin olemassa olevat käsittelijät suljetaan ja korvataan.

Luokat

class logging.Logger(name: str, level: int = NOTSET)

Nimetty lokittaja. Luo lokittajat funktiolla getLogger suoran instansoinnin sijaan, jotta getLogger voi palauttaa saman instanssin samalle nimelle.

name: str

Lokittajan pisteellä erotettu nimi.

level: int

Määritetty numeerinen taso. 0 (NOTSET) tarkoittaa ”peri”.

handlers: list

Tähän lokittajaan liitettyjen Handler-instanssien lista. Kun lista on tyhjä, viestit lähetetään juurilokittajan käsittelijöille.

setLevel(level: int) None

Asettaa lokittajan kynnystason.

isEnabledFor(level: int) bool

Palauttaa True, jos tämä lokittaja käsittelisi tasolla level olevan viestin.

getEffectiveLevel() int

Palauttaa seuraavista ensimmäisen nollasta poikkeavan: tämän lokittajan taso, juurilokittajan taso tai WARNING.

log(level: int, msg: str, *args) None

Kirjaa viestin msg tasolla level. args interpoloidaan viestiin msg %-operaattorilla; jos ensimmäinen positionaalinen argumentti on sanakirja, sitä käytetään kuvauksena.

debug(msg: str, *args) None

Kirjaa viestin msg tasolla DEBUG.

info(msg: str, *args) None

Kirjaa viestin msg tasolla INFO.

warning(msg: str, *args) None

Kirjaa viestin msg tasolla WARNING.

error(msg: str, *args) None

Kirjaa viestin msg tasolla ERROR.

critical(msg: str, *args) None

Kirjaa viestin msg tasolla CRITICAL.

exception(msg: str, *args, exc_info: bool | BaseException = True) None

Kirjaa viestin msg tasolla ERROR ja, kun exc_info on tosi, liittää muotoillun jäljityksen. Jos exc_info on BaseException-instanssi, esitetään kyseisen poikkeuksen jäljitys; muutoin aktiivinen poikkeus tarkistetaan kutsulla sys.exc_info().

addHandler(handler: Handler) None

Liittää käsittelijän handler tähän lokittajaan.

hasHandlers() bool

Palauttaa True, jos tähän lokittajaan on liitetty käsittelijöitä.

class logging.Handler(level: int = NOTSET)

Kaikkien käsittelijöiden kantaluokka. Aliluokat toteuttavat metodin emit().

level: int

Käsittelijän kynnystaso.

formatter: 'Formatter | None'

Aktiivinen Formatter tai None.

setLevel(level: int) None

Asettaa käsittelijän kynnystason.

setFormatter(formatter: Formatter) None

Liittää muotoilijan formatter tähän käsittelijään.

format(record: LogRecord) str

Esittää tietueen record käyttäen määritettyä muotoilijaa.

close() None

Vapauttaa käsittelijän varaamat resurssit. Kutsutaan funktiosta shutdown ja luokasta FileHandler sen sulkemisen yhteydessä.

class logging.StreamHandler(stream=None)

Käsittelijä, joka kirjoittaa muotoillut tietueet ja niiden perään merkin self.terminator (oletuksena "\n") kohteeseen stream. stream on oletuksena sys.stderr.

stream

Kohdevirtaobjekti.

terminator: str

Jokaisen muotoillun tietueen perään liitettävä merkkijono. Oletuksena "\n".

emit(record: LogRecord) None

Kirjoittaa tietueen record kohteeseen stream, jos sen taso ylittää käsittelijän kynnyksen.

close() None

Tyhjentää alla olevan virran, kun se tarjoaa flush-metodin.

class logging.FileHandler(filename: str, mode: str = 'a', encoding: str = 'UTF-8')

StreamHandler-aliluokka, joka avaa tiedoston filename annetulla tilalla mode ja koodauksella encoding ja kirjoittaa muotoillut tietueet siihen. Alla oleva tiedosto suljetaan metodilla close().

class logging.Formatter(fmt: str | None = None, datefmt: str | None = None)

Esittää LogRecord-instanssit merkkijonoina.

fmt on printf-tyylinen malli. Tunnistetut avaimet ovat %(name)s, %(message)s, %(msecs)d, %(asctime)s ja %(levelname)s. Kun arvoa ei aseteta, oletuksena on "%(levelname)s:%(name)s:%(message)s".

datefmt on time.strftime-malli, jota käytetään esittämään %(asctime)s. Oletuksena "%Y-%m-%d %H:%M:%S".

usesTime() bool

Palauttaa True, jos muotoilumalli viittaa avaimeen asctime.

formatTime(datefmt: str, record: LogRecord) str | None

Muotoilee arvon record.ct käyttäen funktiota time.strftime ja mallia datefmt. Palauttaa None alustoilla, joilla time.strftime ei ole saatavilla.

format(record: LogRecord) str

Esittää tietueen record. Jos malli käyttää avainta asctime, metodia formatTime() kutsutaan ensin täyttämään record.asctime.

class logging.LogRecord

Säiliö Logger-objektilta sen käsittelijöille välitettävälle datalle. Instanssit täytetään metodilla set(); lokittajatoteutukset käyttävät uudelleen yhtä tietuetta lokittajaa kohden vähentääkseen muistinvarauksia.

name: str

Lähteenä olevan lokittajan nimi.

levelno: int

Tämän tietueen numeerinen taso.

levelname: str

Tekstimuotoinen tason nimi.

message: str

Täysin muotoiltu lokiviesti.

ct: float

Luontiaika funktion time.time() palauttamana.

msecs: int

Arvon ct millisekuntikomponentti.

asctime: str | None

Ihmisluettava aikaleima; Formatter täyttää sen laiskasti.

set(name: str, level: int, message: str) None

Alustaa tietueen annetuilla arvoilla ja tallentaa nykyisen ajan.