python----打印日志信息(logging模块)

日志级别

  • DEBUG:程序调试bug时使用
  • INFO:程序正常运行时使用
  • WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误
  • ERROR:程序出错误时使用,如:IO操作失败
  • CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使 用

  默认的是WARNING等级,当在WARNING或WARNING之上等级的才记录日志信息。

  日志等级从低到高的顺序是: DEBUG < INFO < WARNING < ERROR < CRITICAL

 

1 import logging
2 
3 logging.debug("This is a debug level log")
4 logging.info("This is a info level log")
5 logging.warning("This is a warning level log")
6 logging.error("This is a error level log")
7 logging.critical("This is a critical level log")

运行结果

注:日志信息只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING

 

logging日志等级和输出格式的设置,且日志信息保存到日志文件

 1 import logging
 2 
 3 logging.basicConfig(
 4     filename="log.txt",
 5     format='%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s',
 6     level=10,
 7     filemode="w",
 8     datefmt='%m/%d/%Y %I:%M:%S'
 9 )
10 logging.debug("This is a debug level log")
11 logging.info("This is a info level log")
12 logging.warning("This is a warning level log")
13 logging.error("This is a error level log")
14 logging.critical("This is a critical level log")

运行结果

 

 

 logging.basicConfig函数各参数:

  • filename:表示文件名
  • filemode:和file函数意义相同,指定日志文件的打开模式,'w'或'a'。参数为‘w’表示每次的日志信息都覆盖掉之前的
  • format:表示日志的输出格式和内容, 参数说明:
    • %(asctime)s: 打印日志的时间
    • %(levelno)s: 打印日志级别的数值
    • %(pathname)s: 打印当前执行程序的路径
    • %(filename)s: 打印当前执行程序名
    • %(funcName)s: 打印日志的当前函数
    • %(lineno)d: 打印日志的当前行号
    • %(thread)d: 打印线程ID
    • %(threadName)s: 打印线程名称
    • %(levelname)s: 打印日志级别名称
    • %(message)s: 打印日志信息
    • %(process)d: 打印进程ID
  • datefmt:表示自定义时间格式
  • level:表示设置的日志等级
    • FATAL = CRITICAL = 50
    • ERROR = 40

    • WARN = WARNING = 30

    • INFO = 20

    • DEBUG = 10

    • NOTSET = 0
  • stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

 

日志写入的函数:

 1 import logging
 2 
 3 def log(log_content):
 4     # 定义文件
 5     logFile = logging.FileHandler('logInfo.txt', 'a')
 6     # log格式
 7     fmt = logging.Formatter(fmt = '%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s')
 8     logFile.setFormatter(fmt)
 9 
10     # 定义日志
11     logger = logging.Logger('logTest', level=logging.DEBUG)
12     logger.addHandler(logFile)
13     logger.info(log_content)

 

posted @ 2020-07-21 15:58  给自己一个改变的理由  阅读(1799)  评论(0编辑  收藏  举报