import logging from conf import settings def logger(log_type): # 生成 logger 对象 logger = logging.getLogger(log_type) logger.setLevel(settings.LOG_LEVEL) # 生成handler对象,向文件输出日志信息 log_file = "%s/log/%s.log" % (settings.BASE_DIR, log_type) global fh fh = logging.FileHandler(log_file) fh.setLevel(settings.LOG_LEVEL) # 生成formatter对象 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # formatter对象绑定到handler对象 fh.setFormatter(formatter) if logger.handlers: # 清空logger.handlers,否则会重复打印日志 logger.handlers.pop() # handler对象绑定到logger logger.addHandler(fh) return logger
logging的日志可以分为 debug(), info(), warning(), error() and critical()
5个级别
%(name)s Logger的名字 %(levelno)s 数字形式的日志级别 %(levelname)s 文本形式的日志级别 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有 %(filename)s 调用日志输出函数的模块的文件名 %(module)s 调用日志输出函数的模块名 %(funcName)s 调用日志输出函数的函数名 %(lineno)d 调用日志输出函数的语句所在的代码行 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数 %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒 %(thread)d 线程ID。可能没有 %(threadName)s 线程名。可能没有 %(process)d 进程ID。可能没有 %(message)s 用户输出的消息