一 配置文件模块
import logging ->导入模块 logger = logging.getLogger('mylogger') ->初始化类二 创建句柄 1 文件句柄 fh = logging.FileHandler('test.log') ->根据文件创建句柄 fh.setLevel(logging.DEBUG) ->设置日志级别 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')->定义日志格式时间 用户 日志级别 日志具体信息
fh.setFormatter(formatter)->装填格式 logger.addHandler(fh)->装填文件句柄 logger.info('foorbar') -> 最终调用三 封装成类
1 可自定义的元素 1 句柄类型 有(FilHandler,StreamHandler等多种类型) 1 StreamHandler: 输出到控制台 2 FileHandler: 输出到文件 3 BaseRotatingHandler 可以按时间写入到不同的日志中。比如将日志按天写入不同的日期结尾的文件文件。 4 SocketHandler 用TCP网络连接写LOG 5 DatagramHandler 用UDP网络连接写LOG 6 SMTPHandler 把LOG写成EMAIL邮寄出去 2 调整日志等级 有(debug,info,error)等 logger.debug("foobar") logger.info("foobar") logger.warning("foobar") logger.error("foobar") logger.critical("foobar") 四 样式例子import logging
class Logger(): def __init__(self, logname, logger): self.logger = logging.getLogger(logger) self.logger.setLevel(logging.DEBUG) fh = logging.FileHandler(logname)//定义文件句柄 fh.setLevel(logging.DEBUG)//定义默认的级别 ch = logging.StreamHandler()//定义流式句柄 ch.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')//定义输出格式 fh.setFormatter(formatter)//句柄加载日志格式 ch.setFormatter(formatter) self.logger.addHandler(fh)//加载句柄 self.logger.addHandler(ch) def get_log(self): return self.logger //返回调用aa=Logger('a.txt','aaa).get_log()
aa.info("we')
分析 1 类初始化函数包含两类 日志文件名和日志输出中间项(自定义输出)
2 输出流程
定义四类 1 类对象 2 类型句柄 3 日志默认级别 3 时间格式
绑定两次 1 类型句柄绑定时间格式 2 对象装载句柄
一 返回 返回最终的logger对象用作使用