确保在Python的标准库中导入logging模块。
import logging
接下来创建一个logger对象实例化。
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
这里,我们将我们的日志器记录器设置为记录所有级别的消息。您可以选择其他级别作为参数。例如:INFO,WARNING,ERROR。
然后,再创建一个handler,将日志记录到控制台。
console_handler = logging.StreamHandler() # 创建一个控制台输出的日志处理器,用于输出到控制台
console_handler.setLevel(logging.DEBUG) # 可以设置输出等级,这里输出所有等级的日志
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 设置日志格式
console_handler.setFormatter(formatter) # 给控制台日志处理器绑定日志格式,就会往控制台打印日志,符合某个等级的日志就就会输出到控制台
logger.addHandler(console_handler) # 日志记录器添加该控制台日志处理器
在上述代码中,我们使用Formatter类将日志格式化。可以根据需求定义自己的日志格式。
例如,‘%(asctime)s - %(name)s - %(levelname)s - %(message)s’的含义:
- asctime: 将日志时间转换格式;
- name: 记录器名称;
- levelname: 日志等级名称;
- message: 实际日志内容。
现在,如果想将日志记录到文件中,我们可以添加另一个handler,使日志输出到文件中。
file_handler = logging.FileHandler('example.log') # 创建一个日志文件处理器,可以将日志保存到文件中
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter) # 给文件日志处理器绑定日志格式,就会往日志文件写入符合某个等级的日志记录
logger.addHandler(file_handler) # 日志记录器添加该文件日志处理器
在每次进行日志记录时,我们只需要使用打印语句,将日志信息记录到我们的logger中,然后它将自动将日志信息记录到两个位置—— 控制台和文件中。
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
完整示例代码:
import logging
def main():
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
file_handler = logging.FileHandler('example.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
if __name__ == '__main__':
main()
输出例子:
- 控制台
2021-07-30 16:12:42,699 - my_logger - DEBUG - debug message
2021-07-30 16:12:42,699 - my_logger - INFO - info message
2021-07-30 16:12:42,700 - my_logger - WARNING - warning message
2021-07-30 16:12:42,700 - my_logger - ERROR - error message
2021-07-30 16:12:42,700 - my_logger - CRITICAL - critical message
- 日志文件 example.log
2021-07-30 16:12:42,699 - my_logger - DEBUG - debug message
2021-07-30 16:12:42,699 - my_logger - INFO - info message
2021-07-30 16:12:42,700 - my_logger - WARNING - warning message
2021-07-30 16:12:42,700 - my_logger - ERROR - error message
2021-07-30 16:12:42,700 - my_logger - CRITICAL - critical message
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python同时向控制台和文件输出日志logging的方法 - Python技术站