下面我将介绍Python通过logging写入日志到文件和控制台的实例,具体步骤如下:
1.导入logging模块
import logging
2.设置日志格式
以时间戳、日志级别、模块名称、行号、线程ID、日志信息为格式,具体可根据需求自定义:
LOG_FORMAT = "%(asctime)s [%(levelname)s] [%(module)s:%(lineno)d] [%(thread)d] - %(message)s"
logging.basicConfig(format=LOG_FORMAT)
3.创建logger对象
在logging模块中,有一个重要的类就是Logger,主要作用是进行日志的记录和输出。创建Logger对象并设置日志记录级别(可选DEBUG、INFO、WARNING、ERROR、CRITICAL):
logger = logging.getLogger()
logger.setLevel(logging.DEBUG) # 设置日志记录级别为DEBUG
4.设置处理器
我们可以对日志进行分级处理,并将不同级别的日志分别输出或写入到不同的地方,比如写入到文件和控制台。
4.1.写入日志到文件
使用FileHandler将日志写入到文件中,可以设置文件名、编码等参数:
# 创建handler对象并设置日志级别、日志格式、写入文件名和编码
file_handler = logging.FileHandler(filename="log.txt", encoding="utf-8")
file_handler.setLevel(logging.WARNING)
file_handler.setFormatter(logging.Formatter(LOG_FORMAT))
# 将handler添加到logger中
logger.addHandler(file_handler)
4.2.写入日志到控制台
使用StreamHandler将日志输出到控制台,默认输出到标准输出流(sys.stderr)中,也可以设置输出流:
# 创建handler对象并设置日志级别、日志格式和输出流
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(logging.Formatter(LOG_FORMAT))
# 将handler添加到logger中
logger.addHandler(console_handler)
5.记录日志信息
使用logger对象记录日志信息,可以使用debug、info、warning、error、critical等方法进行不同级别的日志记录:
logger.debug("This is a debug log.")
logger.info("This is an info log.")
logger.warning("This is a warning log.")
logger.error("This is an error log.")
logger.critical("This is a critical log.")
示例说明
示例1:将日志写入到文件和控制台中
import logging
LOG_FORMAT = "%(asctime)s [%(levelname)s] [%(module)s:%(lineno)d] [%(thread)d] - %(message)s"
logging.basicConfig(format=LOG_FORMAT)
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler(filename="log.txt", encoding="utf-8")
file_handler.setLevel(logging.WARNING)
file_handler.setFormatter(logging.Formatter(LOG_FORMAT))
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(logging.Formatter(LOG_FORMAT))
logger.addHandler(file_handler)
logger.addHandler(console_handler)
logger.debug("This is a debug log.")
logger.info("This is an info log.")
logger.warning("This is a warning log.")
logger.error("This is an error log.")
logger.critical("This is a critical log.")
运行后,会在项目根目录生成一个名为log.txt的文件,并在控制台输出日志信息。
示例2:将日志写入到文件中
import logging
LOG_FORMAT = "%(asctime)s [%(levelname)s] [%(module)s:%(lineno)d] [%(thread)d] - %(message)s"
logging.basicConfig(format=LOG_FORMAT)
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler(filename="log.txt", encoding="utf-8")
file_handler.setLevel(logging.WARNING)
file_handler.setFormatter(logging.Formatter(LOG_FORMAT))
logger.addHandler(file_handler)
logger.debug("This is a debug log.")
logger.info("This is an info log.")
logger.warning("This is a warning log.")
logger.error("This is an error log.")
logger.critical("This is a critical log.")
运行后,会在项目根目录生成一个名为log.txt的文件,其中只包含级别为WARNING及以上的日志信息。
以上就是Python通过logging写入日志到文件和控制台的实例攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 通过logging写入日志到文件和控制台的实例 - Python技术站