Loading

logging模块的基本使用

logging模块的基本使用

1. 日志的级别

日志级别的显示等级:DEBUT < INFO < WARNING < ERROR < CRITICAL

  1. DEBUG: 调试信息,通常在诊断问题的时候用得着
  2. INFO: 普通信息,确认程序按照预期运行
  3. ​ WARNIG: 警告信息,表示发生意想不到的事情,或者指示接下来可能会出现一些问题,但是程序还是继续运行
  4. ​ ERROR: 错误信息,程序运行中出现了一些问题,程序某些功能不能执行
  5. ​ CRITICAL: 危险信息,一个严重的错误,导致程序无法继续运行

2. formatter格式

  1. %(asctime)s 日志事件发生的时间
  2. %(levelname)s 该日志记录的日志级别
  3. %(message)s 日志记录的文本内容
  4. %(name)s 所使用的日志器名称,默认是 'root'
  5. %(pathname)s 调用日志记录函数的文件的全路径
  6. %(filename)s 调用日志记录函数的文件
  7. %(funcName)s 调用日志记录函数的函数名
  8. %(lineno)d 调用日志记录函数的代码所在的行号

3. 例子,使用代码实现(python)

import logging

1. 认识日志级别, 及默认级别
logging.basicConfig(level=logging.DEBUG)   # 通过logging.basicConfig(), 对level参数进行配置,可以设置最低能够显示的日志级别
a = '调试debug'
logging.debug(a)
b = 'info信息'
logging.info(b)

c = 'warning警告'  # 默认能够输出信息的最低等级
logging.warning(c)
d = 'error 出错'
logging.error(d)
e = 'critical危险信息'
logging.critical(e)
# 以上代码的输出信息为:   # 所以说默认的最低等级是: warning
"""
WARNING:root:warning警告
ERROR:root:error 出错
CRITICAL:root:critical危险信息"""


# 2. logging.basicConfig()   # 对logger进行配置, 只需要配置一次,如果配置了多次,那么只有第一个会生效
logging.basicConfig(
    # level  配置最低显示的日志等级
    level=logging.INFO,
    # format 配置日志的输出格式
    format='时间: %(asctime)s, 日志级别: %(levelname)s, 文本内容: %(message)s, 日志器: %(name)s, 文件: %(filename)s, 文件路径: %(pathname)s, 处理函数名: %(funcName)s, 行号: %(lineno)s \n',
    # filename 把日志信息保存到一个文件中去
    filename='mylog.log',
    # filemode  以什么模式保存到文件中
    filemode='a'     # a 追加
)
logging.debug('debug调试')
logging.info('info信息')
logging.warning('warning警告信息')
logging.error('error错误')
logging.critical('critical危险信息')

2. 模块化组件的使用

import logging

# 1. 创建logger对象
logger = logging.getLogger('mylog')

# 2. 创建处理器对象, 输出到什么什么地方
stream_handler = logging.StreamHandler()   # 控制台 (控制台处理器对象)     # logging.FileHandler('mylog.log')  # 文件处理器对象
# stream_handler.setLevel(logging.ERROR)   # 设置显示等级,  (注意: 最低的显示等级为warning, 即使用设置更低的显示等级也不会起作用, 也只会显示warning及更高的显示等级)
file_handler = logging.FileHandler('mylog.log')  # 文件, 输出到mylog.log这个文件中,  文件处理器

# 3. 配置日志的输出格式
formatter = logging.Formatter('时间: %(asctime)s, 日志等级: %(levelname)s, 文本内容: %(message)s, 日志器: %(name)s, 文件名: %(filename)s, 文件路径: %(pathname)s, 处理函数名: %(funcName)s, 行号: %(lineno)d')

# 4. 将处理器对象与日志格式进行绑定, 即设置logger日志的输出格式
stream_handler.setFormatter(formatter)

# 5. 将处理器对象添加(或绑定)到logger对象中去
logger.addHandler(stream_handler)

# 6. 使用
if __name__ == '__main__':
    logger.debug('debug调试')
    logger.info('info信息')
    logger.warning('warning警告信息')
    logger.error('error错误')
    logger.critical('critical危险信息')


posted @ 2019-09-18 21:55  未来已来,你来不来  阅读(230)  评论(0)    收藏  举报