Python logging日志记录, since 2022-04-21

(2022.04.21 Thur)
Logging提供的日志记录方式有两种,分别是

  • 模块级别的函数
  • 日志系统的四大组件

日志级别

logging日志分为五个级别,从低到高如下

  • DEBUG: 详细信息,level=10
  • INFO: 普通信息,确认程序如预期运行,level=20
  • WARNING: 警告,表示程序可能发生意想不到的问题,但仍然可以正常运行,level=30
  • ERROR: 错误信息,程序某些功能不能执行,level=40
  • CRITICAL: 严重错误,程序无法继续执行,level=50

默认级别是WARNING。设置了日志级别之后,该级别和高于该级别的信息都可以保存/显示。

日志信息可输出到控制台console,也可输出到指定文件。

import logging
def logging_test():
    logging.debug('this is a debug logging.')
    logging.info('this is an info logging.')
    logging.warning('this is a warning logging.')
    logging.error('this is an error logging.')
    logging.critical('this is a critical logging.')
    return 'done'

调用

>>> logging_test()
WARNING:root:this is a warning logging.
ERROR:root:this is an error logging.
CRITICAL:root:this is a critical logging.
'done'

注意,对logging级别没有设置,所以默认是WARNING,仅显示WARNING, ERROR, CRITICAL三个信息。

日志设置

通过logging.basicConfig可设置,比如

>>> logging.basicConfig(filename='logging_debut.log', level=logging.DEBUG)

可设置的选项包括

  • filename: 保存成的log文件名
  • level: 日志级别
  • filemode: 如果制定了filename,则指定打开模式('w', 'r', 'a'),默认'a'
  • format: 为处理程序使用指定格式的字符串
  • datafmt: 使用time.strftime()所接受的指定日期/时间格式
  • style: 如果指定了格式,则对格式字符串使用此样式,’%’ 用于 printf 样式、’{’ 用于 str.format()、’$’ 用于 string,默认为“%”

指定的格式包括:

  • %(asctime)s: 日志发生的时间
  • %(levelname)s: 日志级别
  • %(message)s: 日志记录的文本内容
  • %(name)s: 所使用的日志器名称,默认'root'
  • %(pathname)s: 日志记录的函数的文件的全路径
  • %(filename)s: 日志记录的函数的文件
  • %(funcName)s: 日志记录的函数的函数名
  • %(lineno)s: 日志记录的代码所在的行号

应用模块级别函数和设置信息生成日志

def test():
    log_format = '%(asctime)s: %(levelname)s - %(message)s'
    log_filename = 'logging_debut_fmt.log'
    logging.basicConfig(filename= log_filename, level=logging.DEBUG, \
                        format=log_format)
    logging.info('instanciate a class')
    a = [1,2,3] 
    logging.debug('instance: '+str(a))
    logging.warning('conduct addition')
    b = [34,5,6]
    logging.critical('b: '+str(b))
    tmp = a+b
    logging.info('results: '+str(tmp))
    return 'done'

查看log文件,logging_debut_fmt.log

$ cat logging_debut_fmt.log
2022-04-21 12:09:26,061: INFO - instanciate a class
2022-04-21 12:09:26,062: DEBUG - instance: [1, 2, 3]
2022-04-21 12:09:26,062: WARNING - conduct addition
2022-04-21 12:09:26,062: CRITICAL - b: [34, 5, 6]
2022-04-21 12:09:26,062: INFO - results: [1, 2, 3, 34, 5, 6]

你可能感兴趣的:(Python logging日志记录, since 2022-04-21)