python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python logging日志模块

Python logging日志模块的核心用法与实操技巧

作者:独断万古他化

logging 是 Python 标准库中的一个模块,它提供了灵活的日志记录功能,通过 logging,开发者可以方便地将日志信息输出到控制台、文件、网络等多种目标,本文给大家介绍了Python logging日志模块的核心用法与实操技巧,需要的朋友可以参考下

logging 日志介绍

logging 是 Python 标准库中的一个模块,它提供了灵活的日志记录功能。通过 logging,开发者可以方便地将日志信息输出到控制台、文件、网络等多种目标,同时支持不同级别的日志记录,以满足不同场景下的需求。

一、logging 使用示例

1.1 全局logging基础使用

import logging

logging.basicConfig(level=logging.INFO)

logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')

1.2 自定义logger并输出到控制台

# 导入 logging 模块
import logging

logging.basicConfig(level=logging.INFO)

# 获取一个日志记录器对象,名称为当前模块的名称
logger = logging.getLogger(__name__)

# 设置日志记录器的级别为 DEBUG
# 这意味着所有级别为 DEBUG 及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

if __name__ == "__main__":
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

执行结果

This is a warning message
This is an error message
This is a critical message

1.3 自定义logger并输出到日志文件

# 导入 logging 模块
import logging

# 获取一个日志记录器对象,名称为当前模块的名称
logger = logging.getLogger(__name__)

# 设置日志记录器的级别为 DEBUG
# 这意味着所有级别为 DEBUG 及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

# 创建一个 FileHandler 对象,指定日志文件的名称为 "test.log"
# 这个处理器会将日志信息写入到指定的文件中
handler = logging.FileHandler(filename="test.log")

# 将这个处理器添加到日志记录器中
# 这样,日志记录器就会使用这个处理器来处理日志信息
logger.addHandler(handler)

if __name__ == "__main__":
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

执行结果(test.log文件内容)

This is a debug message
This is an info message
This is a warning message
This is an error message
This is a critical message

1.4 设置自定义日志格式

# 导入 logging 模块
import logging

# 获取一个日志记录器对象,名称为当前模块的名称
logger = logging.getLogger(__name__)

# 设置日志记录器的级别为 DEBUG
# 这意味着所有级别为 DEBUG 及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

# 创建一个 FileHandler 对象,指定日志文件的名称为 "test.log"
# 这个处理器会将日志信息写入到指定的文件中
handler = logging.FileHandler(filename="test.log")

# 创建一个日志格式器对象
formatter = logging.Formatter(
    "%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s"
)

# 将格式器设置到处理器上
handler.setFormatter(formatter)

# 将这个处理器添加到日志记录器中
# 这样,日志记录器就会使用这个处理器来处理日志信息
logger.addHandler(handler)

if __name__ == "__main__":
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

二、关键知识点说明

2.1 日志记录器获取

通过 logging.getLogger(__name__) 获取日志记录器对象,name 为当前模块的名称。使用模块名称作为日志记录器的名称有助于在大型项目中区分不同模块的日志。

2.2 日志级别规则

日志级别金字塔(优先级从低到高):DEBUG < INFO < WARNING < ERROR < CRITICAL

2.3 日志处理器

2.4 日志格式占位符说明

格式占位符说明
%(asctime)s日志记录的时间戳,通常显示为日期和时间。
%(levelname)s日志级别(如 DEBUG、INFO、WARNING、ERROR、CRITICAL)。
%(name)s日志记录器的名称,通常为模块名称。
%(filename)s日志记录发生的文件名。
%(funcName)s日志记录发生的函数名。
%(lineno)d日志记录发生的行号。
%(message)s日志消息本身。

2.5 格式器与处理器绑定

通过 handler.setFormatter(formatter) 将格式器对象设置到处理器上,处理器会按照指定格式格式化日志信息后输出。

通过这种方式,可以控制日志信息的输出格式,可以包含如:时间戳、日志级别、文件名、函数名、行号等。

以上就是Python logging日志模块的核心用法与实操技巧的详细内容,更多关于Python logging日志模块的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文