python 库笔记:logging 之模块级别函数

logging 模块提供了一个灵活的框架,用于从python程序中发送日志消息

1 日志级别

  • DEBUG: 详细信息,通常只在诊断问题时使用。
  • INFO: 确认程序按预期运行。
  • WARNING: 表示有潜在的问题。
  • ERROR: 表示一个更严重的问题,程序可能无法执行某些功能。
  • CRITICAL: 表示一个非常严重的错误,程序可能无法继续运行。

2 记录日志方式1:模块级别函数

  • 当指定一个日志级别之后,会记录大于或等于这个日志级别的日志信息,小于的将会被丢弃,
  • 默认情况下日志打印只显示大于等于 WARNING 级别的日志
import logging


def test_logging():
    logging.debug('Python debug')
    logging.info('Python info')
    logging.warning('Python warning')
    logging.error('Python Error')
    logging.critical('Python critical')

test_logging()
'''
WARNING:root:Python warning
ERROR:root:Python Error
CRITICAL:root:Python critical
'''

2.1 设置日志显示级别

  • 通过 logging.basicConfig() 可以设置 root 的日志级别,和日志输出格式
  • 需要在开头就设置,在中间设置并无作用

2.1.1 设置日志级别

import logging

logging.basicConfig(level=logging.DEBUG)

def test_logging():
    
    logging.debug('Python debug')
    logging.info('Python info')
    logging.warning('Python warning')
    logging.error('Python Error')
    logging.critical('Python critical')

test_logging()
'''
DEBUG:root:Python debug
INFO:root:Python info
WARNING:root:Python warning
ERROR:root:Python Error
CRITICAL:root:Python critical
'''

2.1.2 设置存储位置

import logging

logging.basicConfig(filename='log.txt',level=logging.DEBUG)

def test_logging():
    
    logging.debug('Python debug')
    logging.info('Python info')
    logging.warning('Python warning')
    logging.error('Python Error')
    logging.critical('Python critical')

test_logging()

相应的位置就会有一个log.txt文件,里面是logging的内容

2.2 设置日志格式

import logging

logging.basicConfig(format='%(asctime)s %(message)s')

def test_logging():
    
    logging.debug('Python debug')
    logging.info('Python info')
    logging.warning('Python warning')
    logging.error('Python Error')
    logging.critical('Python critical')

test_logging()
'''
2023-10-27 10:48:18,817 Python warning
2023-10-27 10:48:18,819 Python Error
2023-10-27 10:48:18,819 Python critical
'''

2.2.1 格式化命令

%(name)s Logger 的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s: 调用日志函数的源文件的完整路径名
%(filename)s 调用日志函数的源文件的文件名
%(module)s 调用日志函数的模块名
%(funcName)s 调用日志函数的函数名
%(lineno)d 调用日志函数的源文件的行号
%(created)f 日志事件的时间,表示为从纪元开始的秒数
%(asctime)s 人类可读的时间格式
%(msecs)d 日志事件的毫秒部分
%(relativeCreated)d 日志事件的时间,表示为从日志记录模块加载以来的毫秒数
%(thread)d 线程 ID
%(threadName)s 线程名
%(process)d 进程 ID
%(message)s 用户输出的消息
import logging

logging.basicConfig(format='''%(name)s \n 
                                %(levelno)s \n 
                               %(levelname)s \n
                               %(pathname)s \n
                               %(filename)s: \n
                               %(module)s: \n
                               %(funcName)s \n
                               %(lineno)d \n
                               %(created)f: \n
                               %(asctime)s \n
                               %(msecs)d \n
                               %(relativeCreated)d \n
                               %(thread)d \n
                               %(threadName)s \n
                               %(process)d \n
                               %(message)s''',
                   level=logging.CRITICAL)

def test_logging():
    
    logging.debug('Python debug')
    logging.info('Python info')
    logging.warning('Python warning')
    logging.error('Python Error')
    logging.critical('Python critical')

test_logging()
'''
                                root 
 
                                50 
 
                               CRITICAL 

                               C:\Users\16000\AppData\Local\Temp\ipykernel_17092\420147071.py 

                               420147071.py: 

                               420147071: 

                               test_logging 

                               27 

                               1698375176.601358: 

                               2023-10-27 10:52:56,601 

                               601 

                               1961 

                               2776 

                               MainThread 

                               17092 

                               Python critical
'''

你可能感兴趣的:(笔记)