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
- 日志记录器的级别通过
logger.setlevel(logging.xxx)设置 - 只有高于或等于设定级别的日志才会被处理和记录
2.3 日志处理器
- filehandler:用于将日志写入文件,通过
logging.filehandler(filename="文件名")创建 - streamhandler:用于将日志输出到控制台(示例中注释部分可启用)
- 一个日志记录器可以添加多个处理器,实现日志多目标输出(如同时输出到控制台和文件)
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日志模块的资料请关注代码网其它相关文章!
发表评论