日志级别

从低到高依次是:

  • DEBUG:详细的信息,通常只出现在诊断问题上
  • INFO:确认一切按预期运行
  • WARNING:警告
  • ERROR:错误
  • CRITICAL:致命的错误

默认是WARNING,当在WARNING或之上时才被跟踪

日志输出

通过logging.basicConfig函数对日志的输出格式及方式做相关配置,可以指定日志的输出格式format,用于输出很多有用的信息

  • %(levelno)s:打印日志级别的数值
  • %(levelname)s:打印日志级别名称
  • %(pathname)s:打印当前执行程序的路径
  • %(filename)s:打印当前执行程序名
  • %(funcName)s:打印日志的当前函数
  • %(lineno)d:打印日志的当前行号
  • %(asctime)s:打印日志的时间
  • %(thread)d:打印线程ID
  • %(threadName)s:打印线程名称
  • %(process)d:打印进程ID
  • %(message)s:打印日志信息

在工作中常用格式为:format='%(asctime)s - %(process)d - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'

将日志输出到控制台

  1. import logging
  2. logging.basicConfig(level=logging.INFO,
  3. format='%(asctime)s - %(process)d - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
  4. logging.debug('loggging debug message')
  5. logging.info('loggging info message')
  6. logging.warning('loggging warning message')
  7. logging.error('loggging error message')
  8. logging.critical('loggging critical message')

将日志输出到文件

只需要在logging.basicConfig函数中设置好输出文件的文件名和写文件的模式

  1. import logging
  2. logging.basicConfig(level=logging.INFO,
  3. filename='log.txt',
  4. filemode='w',
  5. format='%(asctime)s - %(process)d - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
  6. logging.debug('loggging debug message')
  7. logging.info('loggging info message')
  8. logging.warning('loggging warning message')
  9. logging.error('loggging error message')
  10. logging.critical('loggging critical message')

将日志输出到控制台和文件

  1. import logging
  2. logger = logging.getLogger() # 创建一个logger
  3. logger.setLevel(logging.DEBUG) # 设置log等级总开关
  4. log_file = 'log.txt'
  5. fh = logging.FileHandler(log_file, mode='a')
  6. fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关
  7. ch = logging.StreamHandler()
  8. ch.setLevel(logging.WARNING) # 输出到console的log等级的开关
  9. format = logging.Formatter('%(asctime)s - %(process)d - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
  10. fh.setFormatter(format)
  11. ch.setFormatter(format)
  12. logger.addHandler(fh)
  13. logger.addHandler(ch)
  14. logger.debug('loggging debug message')
  15. logger.info('loggging info message')
  16. logger.warning('loggging warning message')
  17. logger.error('loggging error message')
  18. logger.critical('loggging critical message')