Python使用logging模块记录日志
import logging import sys #创建一个logger对象 logger = logging.getLogger('my_logger') #定义需要记录的日志等级ERROR,WARNING,INFO,DEBUG logger.setLevel(logging.ERROR) #定义日志格式,时间默认会精确到毫秒,通过datefmt精确到秒 formatter = logging.Formatter( "%(asctime)s - %(lineno)s - %(message)s", datefmt='%Y-%m-%d %H:%M:%S' ) #将日志输出到文件 error.log file_handler = logging.FileHandler("error.log", encoding="utf-8") file_handler.setFormatter(formatter) #将日志打印到控制台 console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) #将Handler添加到对饮的logger中 logger.addHandler(file_handler) logger.addHandler(console_handler) def divide(a, b): try: return a / b except Exception as e: # logger.exception(e) # 自动记录堆栈信息 #记录error级别日志,其他级别日志使用logger.debug(info\warn\critical) logger.error(e) print(999) divide(10, 0)
将Logging模块封装成类,然后可以在其他地方进行调用
1.将以下代码保存为名为 logtest.py的文件
import logging,sys class Logger: def __init__(self, log_path, clevel = logging.DEBUG, flevel = logging.DEBUG): self.logger = logging.getLogger('my_logger') self.logger.setLevel(logging.DEBUG) formatter = logging.Formatter("%(asctime)s - %(module)s - %(lineno)s - %(message)s",datefmt='%Y-%m-%d %H:%M:%S') #设置CMD日志 console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) console_handler.setLevel(clevel) #设置文件日志 file_handler = logging.FileHandler(log_path) file_handler.setFormatter(formatter) file_handler.setLevel(flevel) self.logger.addHandler(console_handler) self.logger.addHandler(file_handler) def debug(self,message): self.logger.debug(message) def info(self,message): self.logger.info(message) def warning(self,message): self.logger.warning(message) def error(self,message): self.logger.error(message) def critical(self,message): self.logger.critical(message)
2.在另一个脚本中导入该类,并调用
from logtest import Logger import logging #设置CMD日志输出级别为INFO,文件日志输出级别为ERROR logc = Logger('d:\\temp\\a\\alog.log',logging.INFO,logging.ERROR) logc.info('infooooo') logc.error('erroreee')
浙公网安备 33010602011771号