今天说的是logging模块,类似于android里面的log ,前端里面的console,只能说语言的共性是相通的,功能也是相同的。。。下面来一点一点介绍 :
  • 最简单的用法,就是和android, 前端一样 ,直接把log 打印到输出中:
import logging

log_dict = {
    "level":logging.DEBUG
}

logging.basicConfig(**log_dict)


logging.debug("debug")
logging.info("info")
logging.warn("warn")
logging.warning("warning")
logging.error("error")
  • 后面如果你要是不想看到log的时候,只需要吧log_dict 里面的 “level” 修改成logging.CRITICAL , 级别设为最大,这样所有的logging就都不显示了。
  • 我们可以通过修改basicConfig(**log_dict) 中 log_dict 的参数,来修改打印出的内容,以及把内容写入文件,等等操作。
fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s',
log_dict = {
    "filename" : 'test2/test.log',
    "filemode" : 'a',
    "level" :logging.INFO,
    'format' : fmt,
    'datefmt' : '%Y-%m-%d %H:%M:%S'
}
  • 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用户输出的消息

这些内容也不需要全部记,知道常用的几个就可以了。。。

  • datefmt :
    这个的参数是用来控制上面format中的asctime 里面的时间显示内容,顺序等,就和我们平常输出时间戳修改为日期就可以了。。。
  • filename :
    filename 的字符串是一个文件路径,如上面的一样,这样的话不会打印输出,会直接输出到指定路径的文件下面。。
  • filemode :
    filemode 是用来控制打印日志文件的读写状态, ‘w’, ‘a’ 这些东东,具体不懂的可以百度下pyton 文件读写。。。