当我们开发Python项目时,很可能需要记录和追踪程序运行日志以便于排查问题和优化代码。Python中的logging模块提供了一种方便且强大的方法来处理日志,同时也可以按照不同的级别来过滤不同等级的日志信息。
下面是使用logging模块打印log日志的完整攻略:
1、导入logging模块
import logging
2、设定日志输出级别和格式
# 设定日志输出级别
logging.basicConfig(level=logging.DEBUG)
# 设定日志输出格式
logger = logging.getLogger(__name__)
logger_formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
以上代码设置了日志输出级别为DEBUG(打印全部级别的日志信息),并定义了一个日志输出格式为如下形式的字符串:
2022-01-01 13:00:00,000 DEBUG This is a log message
其中:
- %(asctime)s:表示日志信息记录的时间
- %(levelname)s:表示日志的级别(DEBUG、INFO、WARNING、ERROR、CRITICAL等)
- %(message)s:表示日志信息的具体内容
3、记录日志信息并输出
# 记录日志信息
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")
# 输出日志信息
console_handler = logging.StreamHandler()
console_handler.setFormatter(logger_formatter)
logger.addHandler(console_handler)
以上代码利用logger对象记录了4条不同级别的日志信息,并通过StreamHandler对象在控制台输出这些日志信息。
示例一
import logging
# 设定日志输出级别
logging.basicConfig(level=logging.DEBUG)
# 设定日志输出格式
logger = logging.getLogger(__name__)
logger_formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
# 记录日志信息
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")
# 输出日志信息
console_handler = logging.StreamHandler()
console_handler.setFormatter(logger_formatter)
logger.addHandler(console_handler)
输出结果:
2022-01-01 13:00:00,000 INFO This is an info message
2022-01-01 13:00:00,000 WARNING This is a warning message
2022-01-01 13:00:00,000 ERROR This is an error message
2022-01-01 13:00:00,000 CRITICAL This is a critical message
示例二
import logging
# 设定日志输出级别
logging.basicConfig(filename="example.log", level=logging.INFO)
# 设定日志输出格式
logger = logging.getLogger(__name__)
logger_formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
# 记录日志信息
logger.info("This is an info message")
logger.warning("This is a warning message")
# 输出日志信息
file_handler = logging.FileHandler("example.log")
file_handler.setFormatter(logger_formatter)
logger.addHandler(file_handler)
以上代码将日志信息输出到example.log文件中,并只记录INFO级别以上的日志信息。
通过以上示例,我们可以看到logging模块提供了非常良好的灵活性和扩展性,可以根据实际需要生成不同级别和格式的日志信息,有效地帮助我们对程序进行调节和维护。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中使用logging模块打印log日志详解 - Python技术站