第一步,创建一个logger;
第二步,创建一个handler,用于写入日志文件;
第三步,再创建一个handler,用于输出到控制台;
第四步,定义handler的输出格式;
第五步,将logger添加到handler里面。这段代码里面提到了好多概念,包括:Logger,Handler,Formatter。
#第一步 创建一个logger import logging logger = logging.getLogger() logger.setLevel(logging.INFO) #log等级开关 #第二步 创建一个handler 用来写日志文件 fh = logging.FileHandler("test.log",encoding="utf-8") fh.setLevel(logging.DEBUG) #输出到file 的log等级开关 #第三步 再创建一个handler 用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.WARNING) #输出到console的log等级开关 #第四步 定义handler的输出格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter) ch.setFormatter(formatter) #第五步 将logger添加到handler里面 logger.addHandler(fh) logger.addHandler(ch) #日志 logger.debug('logger debug message') # 计算或者工作的细节 logger.info('logger info message') # 记录一些用户的增删改查的操作 logger.warning('logger warning message') # 警告操作 logger.error('logger error message') # 错误操作 logger.critical('logger critical message') # 批判的 直接导致程序出错退出的
格式的常用语法
%(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:用户输出的消息
详情网址 http://dwz.cn/yPC4tFWL