Python3基础---logging模块

    技术2025-08-30  9

    logging模块,是Python内置的一个模块,用来控制日志的输出

    1.logging等级

    (1)DEBUG:调试过程中使用

    (2)INFO:处理请求或者状态变化等日常事务

    (3)WARNING:发生很重要的事件,但不是错误时,如用户登录密码错误等(默认)

    (4)ERROR:发生错误时使用

    (5)CRITICAL:特别糟糕的事情,比如内存耗尽,磁盘为空,很少使用

    logging等级从低到高,设置logging等级时,比如level=logging.ERROR,那ERROR-CRITICAL的日志信息都会输出,默认logging等级是WARNING

    2.几个重要概念

    (1)Logger:记录器,暴露了应用程序代码能直接使用的接口

    创建logger记录器:logger=logging.getLogger(logger name)

    (2)Handler:处理器,将记录器产生的日志记录发送至指定目的地

    创建StreamHandler处理器:sh=logging.StreamHandler(stream=None)创建 FileHandler处理器:fh = logging.FileHandler(filename="fh.log")

    (3)Filter:过滤器,提供了更好的粒度控制,它可以决定输出哪些日志记录

    创建过滤器:filter=logging.Filter(name=" xx")

    (4)Formatter: 格式化器,指明了最终输出的日志记录的布局

    创建格式化器:formatter=logging.Formatter(fmt=None, datefmt=None)fmt:消息的格式化字符串datefmt:日期/时间的字符串

    3.logging basicConfig配置

    (1)level:设置日志级别,默认为logging.WARNNING

    (2)filename:指定日志文件名,如果不指定filename,默认输出到控制台

    (3)filemode:指定日志文件的打开模式,常用"w"或者“a”  [w:覆盖写,a:追加写] ,默认为“a”,可以不指定

    (4)datefmt:设置日期和时间格式

    格式 描述 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身

    (5)stream:使用指明的流来初始化StreamHandler。该参数与'filename'不兼容,如果两个都有,'stream'被忽略

    (6)format:指定日志输出的格式和内容

    格式 描述 %(levelno)s 打印日志级别的数值 %(levelname)s 打印日志级别名称 %(pathname)s 打印当前执行程序的路径 %(filename)s 打印当前执行程序名称 %(funcName)s 打印日志的当前函数 %(lineno)d 打印日志的当前行号 %(asctime)s 打印日志的时间 %(thread)d 打印线程id %(threadName)s 打印线程名称 %(process)d 打印进程ID %(message)s 打印日志信息 代码示例: import logging # 创建一个logger记录器 logger_name = "test" logger = logging.getLogger(logger_name) # 设置log等级 # logger.setLevel(logging.DEBUG) # 文件处理器 log_path = "./test_log.log" # log日志路径 file_handler = logging.FileHandler(logger_name) # 创建文件处理器 file_handler.setLevel(logging.DEBUG) # 设置文件处理器log等级 # 流处理器 stream_handler = logging.StreamHandler() # 创建流处理器 stream_handler.setLevel(logging.ERROR) # 设置流处理器的log等级 # formatter格式化器 format_str = "%(asctime)-15s %(levelname)s %(filename)s %(lineno)d %(message)s" datefmt = "%Y-%m-%d %H:%M:%S" formatter = logging.Formatter(fmt=format_str, datefmt=datefmt) # 给处理器设置格式化模式 file_handler.setFormatter(formatter) stream_handler.setFormatter(formatter) # 给记录器添加处理器 logger.addHandler(file_handler) logger.addHandler(stream_handler) if __name__ == '__main__': logger.debug("这个是debug日志") logger.info("这个是info日志") logger.warning("这个是warning日志") logger.error("这个是ERROR日志") logger.critical("这个是critical日志")

     

    Processed: 0.020, SQL: 9