28-2 logging 日志模块

功能
1. 日志格式的规范
2. 操作的简化
3. 日志的分级管理


logging不能帮你做的事情
自动生成你要打印的内容
需要程序员自己在开发的时候定义好 :
在哪些地方需要打印,要打印的内容是什么,内容的级别

logging模块的使用 :
普通配置型 简单的 可定制化差
对象配置型 复杂的 可定制化强


一、认识日志分级

import logging
logging.debug('debug message')      # 调试模式  一般不显示  10
logging.info('info message')        # 基础信息    一般不显示 20
logging.warning('warning message')  # 警告    30
logging.error('error message')      # 错误  40
logging.critical('critical message')# 严重错误  50

+++++++++++++++++++++++
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message

 

上面debug\info默认不显示,但是实在要显示咋办?

配置日志级别
import logging

logging.basicConfig(level=logging.DEBUG)   # 10 配置日志级别
logging.debug('debug message')      # 调试模式
logging.info('info message')        # 基础信息
logging.warning('warning message')  # 警告
logging.error('error message')      # 错误
logging.critical('critical message')# 严重错误

 

设置格式,输出到当前屏幕上

import logging
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    )
logging.debug('debug message')      # 调试模式
logging.info('info message')        # 基础信息
logging.warning('warning message')  # 警告
logging.error('error message')      # 错误
logging.critical('critical message')# 严重错误

=====================
Wed, 08 Apr 2020 22:18:40 8.logging模块.py[line:39] DEBUG debug message
Wed, 08 Apr 2020 22:18:40 8.logging模块.py[line:40] INFO info message
Wed, 08 Apr 2020 22:18:40 8.logging模块.py[line:41] WARNING warning message
Wed, 08 Apr 2020 22:18:40 8.logging模块.py[line:42] ERROR error message
Wed, 08 Apr 2020 22:18:40 8.logging模块.py[line:43] CRITICAL critical message

 

配置输入到文件内    添加 filename='test.log'

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename='test.log')

 

核心矛盾: 只能输出屏幕和文件二选一  这点无法避免

所以用下面:

  二、basicConfig

logger对象的形式来操作日志文件

创建一个logger对象  
logger = logging.getLogger()
  
创建一个文件管理操作符
fh = logging.FileHandler('logger.log',encoding='utf-8')   # 输出中文

创建一个屏幕管理操作符
sh = logging.StreamHandler()

创建一个日志输出的格式
format1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
 实例化的过程。这四个之间没有任何关系!



所以我们:
  
文件管理操作符 绑定一个 格式
fh.setFormatter(format1)

  屏幕管理操作符 绑定一个 格式
sh.setFormatter(format1)
logger.setLevel(logging.DEBUG)    # 配置日志级别

  logger对象 绑定 文件管理操作符
logger.addHandler(fh)

 

  logger对象 绑定 屏幕管理操作符
logger.addHandler(sh)
logger.debug('debug message')      # 调试模式
logger.info('我的信息')        # 基础信息
logger.warning('warning message')  # 警告
logger.error('error message')      # 错误
logger.critical('critical message')# 严重错误
View Code

 

posted @ 2020-04-08 22:52  蜗牛般庄  阅读(127)  评论(0编辑  收藏  举报
Title
页脚 HTML 代码