logging --- การบันทึกเหตุการณ์¶
โมดูลนี้ให้ชุดย่อยที่มีน้ำหนักเบาของแพ็กเกจ logging มาตรฐานของ Python ที่ปรับแต่งสำหรับ MicroPython รองรับการบันทึกแบบมีระดับผ่านออบเจ็กต์ Logger ที่ตั้งชื่อตามลำดับชั้น ตัวจัดการขนาดเล็กจำนวนหนึ่ง (StreamHandler, FileHandler) การจัดรูปแบบสไตล์ printf ผ่าน Formatter และฟังก์ชันอำนวยความสะดวกระดับโมดูลที่เทียบเท่ากับฟังก์ชันที่ทำงานบน root logger
โมดูลนี้ปฏิบัติตาม API ของ CPython ที่คุ้นเคยอย่างใกล้ชิดพอที่แอปพลิเคชันอย่างง่ายที่เขียนสำหรับไลบรารีมาตรฐานควรทำงานได้โดยไม่ต้องเปลี่ยนแปลง ไม่มีการให้บริการ Filters การล็อกหลายกระบวนการ รูปแบบไฟล์การกำหนดค่า และคลาสตัวจัดการส่วนใหญ่
ค่าคงที่ระดับ¶
ฟังก์ชัน¶
- logging.getLogger(name: str | None = None) Logger¶
คืนค่า
Loggerที่ลงทะเบียนไว้ภายใต้ name โดยสร้างขึ้นในการใช้งานครั้งแรก หาก name เป็นNoneจะคืนค่า root logger การเรียกครั้งแรกด้วยname="root"(หรือโดยไม่ตั้ง name) จะเรียกbasicConfigโดยอัตโนมัติเพื่อแนบStreamHandlerเริ่มต้นที่เขียนไปยังsys.stderr
- logging.log(level: int, msg: str, *args) None¶
บันทึกข้อความที่ระดับ level บน root logger args จะถูกแทรกเข้าไปใน msg โดยใช้การจัดรูปแบบ
%แบบ printf; อาร์กิวเมนต์ dict เดียวจะถูกใช้เป็น mapping
- 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¶
ปิด handler ทุกตัวที่แนบอยู่กับ logger ทุกตัวที่รู้จักและลืม logger เหล่านั้น ลงทะเบียนโดยอัตโนมัติผ่าน
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¶
กำหนดค่า root logger ด้วย handler เดียว
หาก filename ถูกกำหนด จะสร้าง
FileHandlerโดยใช้ filemode และ encoding; มิฉะนั้นจะใช้StreamHandlerที่เขียนไปยัง stream (ค่าเริ่มต้นคือsys.stderr)format และ datefmt จะถูกส่งผ่านไปยัง
Formatterใหม่level กำหนดทั้งระดับของ handler และระดับของ root logger
หาก root logger มี handler อยู่แล้ว ฟังก์ชันนี้จะไม่ทำอะไร เว้นแต่ force จะเป็น
Trueซึ่งในกรณีนี้ handler ที่มีอยู่จะถูกปิดและแทนที่
คลาส¶
- class logging.Logger(name: str, level: int = NOTSET)¶
Logger ที่มีชื่อ สร้าง logger ผ่าน
getLoggerแทนที่จะสร้างโดยตรง เพื่อให้getLoggerสามารถคืนค่าอินสแตนซ์เดียวกันสำหรับชื่อเดียวกัน- handlers: list¶
รายการอินสแตนซ์
Handlerที่แนบอยู่กับ logger นี้ เมื่อว่างเปล่า ข้อความจะถูกส่งไปยัง handler ของ root logger
- getEffectiveLevel() int¶
คืนค่าแรกที่ไม่ใช่ศูนย์จาก: ระดับของ logger นี้, ระดับของ root logger หรือ
WARNING
- log(level: int, msg: str, *args) None¶
บันทึก msg ที่ระดับ level args จะถูกแทรกเข้าไปใน msg ด้วยตัวดำเนินการ
%; หากอาร์กิวเมนต์ตำแหน่งแรกเป็น dict จะถูกใช้เป็น mapping
- class logging.Handler(level: int = NOTSET)¶
คลาสฐานสำหรับ handler ทุกตัว คลาสย่อยต้องสร้าง
emit()- close() None¶
ปลดปล่อยทรัพยากรที่ handler ถือครอง เรียกโดย
shutdownและโดยFileHandlerเมื่อถูกปิด
- class logging.StreamHandler(stream=None)¶
Handler ที่เขียนระเบียนที่จัดรูปแบบแล้ว ตามด้วย
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