欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python logging模块用法示例

程序员文章站 2024-01-16 08:34:28
本文实例讲述了python logging模块用法。分享给大家供大家参考,具体如下: logging模块 函数式简单配置 import logging lo...

本文实例讲述了python logging模块用法。分享给大家供大家参考,具体如下:

logging模块

函数式简单配置

import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

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。若同时列出了filenamestream两个参数,则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 用户输出的消息

logging库提供了多个组件:loggerhandlerfilterformatter。logger对象提供应用程序可直接使用的接口,handler发送日志到适当的目的地,filter提供了过滤日志信息的方法,formatter指定日志显示格式。另外,可以通过:logger.setlevel(logging.debug)设置级别,当然,也可以通过fh.setlevel(logging.debug)单对文件流设置某个级别。

def my_logger(filename,leval,file = true,stream = true):
  logger = logging.getlogger()
  formatter = logging.formatter (fmt = '%(asctime)s--%(message)s----%(name)s--%(levelname)s--%(lineno)d',
                  datefmt = '%d/%m/%y %h:%m:%s')
  logger.setlevel(leval)
  if file:
    file_handler = logging.filehandler(filename, encoding='utf-8')
    logger.addhandler(file_handler)
    file_handler.setformatter(formatter)
  if stream:
    stream_handler = logging.streamhandler()
    stream_handler.setformatter(formatter)
    logger.addhandler(stream_handler)
  return logger
logger = my_logger('logging',logging.debug)
logger.warning('warn!!!')

运行结果:

28/08/18 09:48:53--warn!!!----root--warning--27

更多关于python相关内容感兴趣的读者可查看本站专题:《python日志操作技巧总结》、《python函数使用技巧总结》、《python字符串操作技巧汇总》、《python入门与进阶经典教程》及《python文件与目录操作技巧汇总

希望本文所述对大家python程序设计有所帮助。