实现Python日志同时输出到屏幕和文件,可以使用Python标准库logging。logging是一个强大的日志模块,可以实现灵活的日志记录和输出方式。
以下是实现步骤:
步骤一:导入logging模块
import logging
步骤二:创建日志相关的变量
logger = logging.getLogger('mylogger') # 创建logger对象
logger.setLevel(logging.DEBUG) # 设置日志记录级别
# 设置文件handler
file_handler = logging.FileHandler('log.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
# 设置屏幕handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
# 将handler添加到logger对象中
logger.addHandler(file_handler)
logger.addHandler(console_handler)
步骤三:使用日志记录信息
logger.debug('debug info')
logger.info('info info')
logger.warning('warning info')
logger.error('error info')
logger.critical('critical info')
以上代码,创建了一个名为mylogger
的logger对象,设置了日志记录级别为DEBUG,创建了一个文件handler和一个屏幕handler,设置了它们的级别和格式,最后将handler添加到logger对象中。通过在Python程序中使用logger.debug/info/warning/error/critical
等方法记录不同级别的信息即可实现多个地方同时输出日志信息。
以下是完整代码:
import logging
# 创建logger对象
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
# 设置文件handler
file_handler = logging.FileHandler('log.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
# 设置屏幕handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
# 将handler添加到logger对象中
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 使用日志记录信息
logger.debug('debug info')
logger.info('info info')
logger.warning('warning info')
logger.error('error info')
logger.critical('critical info')
示例一:输出到文件和屏幕
以上代码中,文件日志输出到log.log中,同时会在控制台输出。但是有时候,我们需要只在文件中记录日志,不在控制台输出。
import logging
# 创建logger对象
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
# 设置文件handler
file_handler = logging.FileHandler('log.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
# 将handler添加到logger对象中
logger.addHandler(file_handler)
# 使用日志记录信息
logger.debug('debug info')
logger.info('info info')
logger.warning('warning info')
logger.error('error info')
logger.critical('critical info')
示例二:输出到不同的文件
有时候,我们需要将不同级别的日志信息输出到不同的文件中。
import logging
# 创建logger对象
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
# 设置文件handler
file_handler_debug = logging.FileHandler('debug.log')
file_handler_debug.setLevel(logging.DEBUG)
file_handler_debug.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
file_handler_info = logging.FileHandler('info.log')
file_handler_info.setLevel(logging.INFO)
file_handler_info.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
# 将handler添加到logger对象中
logger.addHandler(file_handler_debug)
logger.addHandler(file_handler_info)
# 使用日志记录信息
logger.debug('debug info')
logger.info('info info')
以上代码中,我们通过不同的文件handler设置了不同级别的输出文件,最后将handler添加到logger对象中,可以将不同级别的日志信息输出到不同的文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 实现日志同时输出到屏幕和文件 - Python技术站