python中记录模块的使用方法

  介绍

小编给大家分享一python中记录下模块的使用方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

默认情况下python的<代码>日志模块将日志打印到了标准输出中,且只显示了大于等于警告级别的日志,这说明默认的日志级别设置为警告(日志级别等关键级比;错误比;警告祝辞信息在调试),默认的日志格式为日志级别:记录器名称:用户输出消息。

<强>灵活配置日志级别,日志格式、输出位置

进口记录=& # 39;$ file_handle=logging.FileHandler(文件名x1.log& # 39;,模式=& # 39;一个# 39;,编码=& # 39;utf - 8 # 39;,)
  logging.basicConfig (
  格式=& # 39;% (asctime) s - %(名字)s - % (levelname) s - %(模块):% & # 39;(消息),
  datefmt=& # 39; Y % - % - % d % H: % m: % S % p # 39;
  处理程序=($ file_handle,),
  水平=logging.ERROR
  )
  
  logging.error(& # 39;你好& # 39;)

<强>日志切割

进口时间
  导入日志
  从日志导入处理程序
  
  sh=logging.StreamHandler ()
  rh=handlers.RotatingFileHandler (& # 39; myapp.log& # 39;, maxBytes=1024, backupCount=5)
  跳频=handlers.TimedRotatingFileHandler(文件名=& # 39;x2.log& # 39;,当=& # 39;& # 39;,间隔=5,编码=& # 39;utf - 8 # 39;)
  logging.basicConfig (
  格式=& # 39;% (asctime) s - %(名字)s - % (levelname) s - %(模块):% & # 39;(消息),
  datefmt=& # 39; Y % - % - % d % H: % m: % S % p # 39;
  处理程序=(fh、sh、rh),
  水平=logging.ERROR
  )
  
  因为我在范围(100000):
  time . sleep (1)
  logging.error('KeyboardInterrupt error %s'%str(i))

配置参数

logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:

filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
format:指定handler使用的日志显示格式。
datefmt:指定日期时间格式。
level:设置rootlogger(后边会讲解具体概念)的日志级别
stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log','w')),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。

format参数中可能用到的格式化串:
%(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用户输出的消息

属性格式描述asctime%(asctime)s日志产生的时间,默认格式为2003-07-08 16:49:45,896created%(created)ftime.time()生成的日志创建时间戳filename%(filename)s生成日志的程序名funcName%(funcName)s调用日志的函数名levelname%(levelname)s日志级别 ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')levelno%(levelno)s日志级别对应的数值lineno%(lineno)d日志所针对的代码行号(如果可用的话)module%(module)s生成日志的模块名msecs%(msecs)d日志生成时间的毫秒部分message%(message)s具体的日志信息name%(name)s日志调用者pathname%(pathname)s生成日志的文件的完整路径process%(process)d生成日志的进程ID(如果可用)processName%(processName)s进程名(如果可用)thread%(thread)d生成日志的线程ID(如果可用)threadName%(threadName)s线程名(如果可用)

logger对象配置

针对不同的数据流设置不同的日志级别。

进口记录
  
  记录器=logging.getLogger ()
  #创建一个处理程序,用于写入日志文件
  跳频=logging.FileHandler (& # 39; test.log& # 39;,编码=& # 39;utf - 8 # 39;)
  fh.setLevel (logging.DEBUG)
  
  #再创建一个处理程序,用于输出到控制台
  ch=logging.StreamHandler ()
  ch.setLevel (logging.INFO)
  
  格式化程序=logging.Formatter (& # 39; % (asctime) s - %(名称)(levelname) s - s - % %(消息)& # 39;)
  
  fh.setFormatter (formatter)
  ch.setFormatter (formatter)
  
  #记录器对象可以添加多个跳频和ch对象
  logger.addHandler(跳频)
  logger.addHandler (ch)
  
  logger.debug(& # 39;记录器调试消息# 39;)
  logger.info(& # 39;日志信息消息# 39;)
  logger.warning(& # 39;记录器警告消息# 39;)
  logger.error(& # 39;记录器错误消息# 39;)
  logger.critical(& # 39;记录器关键消息# 39;)

python中记录模块的使用方法