logging — רישום אירועים¶
מודול זה מספק תת-קבוצה קלת-משקל של חבילת ה-logging הסטנדרטית של Python, מותאמת ל-MicroPython. הוא תומך ברישום לפי רמות באמצעות אובייקטי Logger בעלי שמות היררכיים, אוסף קטן של מטפלים (StreamHandler, FileHandler), עיצוב בסגנון printf באמצעות Formatter, ופונקציות נוחות ברמת המודול המקבילות לאלו הפועלות על ה-logger השורשי.
המודול עוקב אחר ה-API המוכר של CPython בצורה קרובה מספיק כך שיישומים פשוטים שנכתבו עבור הספרייה הסטנדרטית אמורים לעבוד ללא שינוי. מסננים, נעילה רב-תהליכית, פורמט קובץ התצורה ורוב מחלקות המטפלים אינם מסופקים.
קבועי רמות¶
פונקציות¶
- logging.getLogger(name: str | None = None) Logger¶
מחזירה את ה-
Loggerהרשום תחת name, ויוצרת אותו בשימוש הראשון. אם name הואNoneמוחזר ה-logger השורשי. הקריאה הראשונה עםname="root"(או עם name שאינו מוגדר) מפעילה באופן מרומז אתbasicConfigכדי לצרףStreamHandlerברירת מחדל הכותב אלsys.stderr.
- logging.log(level: int, msg: str, *args) None¶
רושמת הודעה ברמה level על ה-logger השורשי. args משולבים לתוך msg באמצעות עיצוב
%בסגנון printf; ארגומנט dict בודד משמש כמיפוי.
- logging.exception(msg: str, *args, exc_info: bool | BaseException = True) None¶
שקול ל-
getLogger().exception(msg, *args, exc_info=exc_info). רושם את ההודעה ברמהERRORובנוסף מעצב את ה-traceback של החריגה הפעילה כאשר exc_info הוא ערך אמת. אם exc_info הוא עצמוBaseException, נעשה שימוש ב-traceback של אותה חריגה; אחרת מתבצעת התייעצות עםsys.exc_info()כאשר הוא זמין.
- logging.shutdown() None¶
סוגרת כל מטפל המצורף לכל logger ידוע ומשכיחה את ה-loggers. נרשמת אוטומטית באמצעות
sys.atexitכאשר hook זה זמין.
- logging.addLevelName(level: int, name: str) None¶
משייכת את ה-name הטקסטואלי ל-level המספרי כך ש-
Formatterיוכל להציגו באמצעות%(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¶
מגדירה את ה-logger השורשי עם מטפל יחיד.
אם filename מסופק נוצר
FileHandlerתוך שימוש ב-filemode וב-encoding; אחרת נעשה שימוש ב-StreamHandlerהכותב אל stream (ברירת המחדל היאsys.stderr).format ו-datefmt מועברים ל-
Formatterחדש.level קובע הן את רמת המטפל והן את רמת ה-logger השורשי.
אם ל-logger השורשי כבר יש מטפלים, פונקציה זו אינה עושה דבר אלא אם force הוא
True, ובמקרה זה המטפלים הקיימים נסגרים ומוחלפים.
מחלקות¶
- class logging.Logger(name: str, level: int = NOTSET)¶
logger בעל שם. בנו loggers באמצעות
getLoggerולא ישירות, כך ש-getLoggerיוכל להחזיר את אותה מופע עבור אותו שם.- handlers: list¶
רשימת מופעי ה-
Handlerהמצורפים ל-logger זה. כאשר היא ריקה, הודעות נשלחות למטפלים של ה-logger השורשי.
- getEffectiveLevel() int¶
מחזירה את הראשון שאינו אפס מבין: רמת ה-logger הזה, רמת ה-logger השורשי, או
WARNING.
- log(level: int, msg: str, *args) None¶
רושמת msg ברמה level. args משולבים לתוך msg באמצעות אופרטור ה-
%; אם הארגומנט המיקומי הראשון הוא dict הוא משמש כמיפוי.
- class logging.Handler(level: int = NOTSET)¶
מחלקת בסיס לכל המטפלים. תת-מחלקות מממשות את
emit().- close() None¶
משחררת משאבים המוחזקים על ידי המטפל. נקראת על ידי
shutdownועל ידיFileHandlerכאשר הוא נסגר.
- class logging.StreamHandler(stream=None)¶
מטפל הכותב רשומות מעוצבות, ואחריהן
self.terminator("\n"כברירת מחדל), אל stream. ברירת המחדל של stream היאsys.stderr.- stream¶
אובייקט ה-stream של היעד.
- class logging.FileHandler(filename: str, mode: str = 'a', encoding: str = 'UTF-8')¶
תת-מחלקה של
StreamHandlerהפותחת את filename עם ה-mode וה-encoding הנתונים וכותבת אליו רשומות מעוצבות. הקובץ הבסיסי נסגר ב-close().
- class logging.Formatter(fmt: str | None = None, datefmt: str | None = None)¶
מציגה מופעי
LogRecordכמחרוזות.fmt הוא תבנית בסגנון printf. המפתחות המוכרים הם
%(name)s,%(message)s,%(msecs)d,%(asctime)sו-%(levelname)s. כאשר אינו מוגדר, ברירת המחדל היא"%(levelname)s:%(name)s:%(message)s".datefmt היא תבנית ה-
time.strftimeהמשמשת להצגת%(asctime)s. ברירת המחדל היא"%Y-%m-%d %H:%M:%S".- formatTime(datefmt: str, record: LogRecord) str | None¶
מעצבת את
record.ctבאמצעותtime.strftimeו-datefmt. מחזירהNoneבפלטפורמות שבהןtime.strftimeאינו זמין.
- format(record: LogRecord) str¶
מציגה את record. אם התבנית משתמשת ב-
asctime,formatTime()מופעלת תחילה כדי לאכלס אתrecord.asctime.