美文网首页
22.logging模块

22.logging模块

作者: 哈哈大圣 | 来源:发表于2019-12-26 16:45 被阅读0次

1). 概述

  1. 日志模块,很重要:程序调试跟踪、线上故障处理、大数据计算等等。
  2. 模块导入方式
import logging
  1. 日志的级别
方法 级别描述
logging.debug("?") 调试级别,记录的很详细
logging.info("?") 日常登录什么的记录
logging.warning("?") 警告,没有发生错误,但是可能存在潜在的问题
logging.error("?") 程序运行出问题了
logging.critical("?") 程序运行出现了严重的问题

级别低的会包含级别高的。

2). 日志输出位置

  1. 默认输出日志信息到控制台
logging.warning("user attempted weong more than 3 times")
logging.critical("server is down")
  1. 配置输出日志信息到文件
    • basicConfig 给出基本的配置
logging.basicConfig(filename = "log_test.org", 
                    level = logging.INFO,
                    format = "%(asctime)s:%(message)s:%(levelno)s",
                    datefmt = "%Y-%m-%d %I:%M:%S %p"
                    )

logging.debug("debug")
logging.info("info")
logging.warning("warning")

3). format格式

format 描述
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别10-debug ... 50-critical
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s 用户输出的消息

4). 同时输出到屏幕和文件的配置

  1. 生成logger对象,获得日志
logger = logging.getLogger("web") # 生成logger对象
logger.setLevel(logging.DEBUG) #默认级别为warning,只会输出大于等于这个级别的日志信息,这里设置的优先级最高
  1. 把filter对象添加到logger中
class IgnoreBackupLogFilter(logging.Filter):
    """忽略带db backup的日志"""
    def filter(self, record): #非固定写法
        return "db backup" not in record.getMessage() #如果日志中的信息有db backup 忽略掉这一条日志
        
logger.addFilter(IgnoreBackupLogFilter()) #把filter对象添加到logger中,功能是进行过滤
  1. 生成handler对象,将handler绑定到logger对象:屏幕输出
ch = logging.StreamHandler() # handler,屏幕
ch.setLevel(logging.DEBUG)   # 可以设置屏幕handler的输出级别,先判断全局,再判断是否满足这里
logger.addHandler(ch)
  1. 生成handler对象,将handler绑定到logger对象:文件输出
fh = logging.FileHandler("web.log") # handler,文件
fh.setLevel(logging.WARNING)        # 可以设置文件handler的输出级别,先判断全局,再判断是否满足这里
logger.addHandler(fh)
  1. 生成formatter对象;formatter对象绑定handler
console_formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s - %(lineno)d")  #formatter 对象 屏幕
file_formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s - %(lineno)d")  #formatter 对象 文件
ch.setFormatter(console_formatter)  #formatter对象绑定handler 屏幕
fh.setFormatter(file_formatter) #formatter对象绑定handler 文件
  1. 日志文件到了按照一定规律进行分割配置的Handler设置
from logging import handlers

# 按照大小截断,backupCount表示最多存几个
fh = handlers.RotatingFileHandler("web.log",maxBytes=10,backupCount=3) 

# when 按照时间S M H D W midnight(秒 分 时 天 每星期<interval=0代表星期一> 每天凌晨) interval设定when的长度
fh = handlers.TimedRotatingFileHandler("web.log",when="W",interval=0,backupCount=3)

绑定handler同上

相关文章

  • 22.logging模块

    1). 概述 日志模块,很重要:程序调试跟踪、线上故障处理、大数据计算等等。 模块导入方式 日志的级别 方法级别描...

  • python常用模块!!

    os模块: stat模块: sys模块: hashlib,md5模块: random模块: types模块: at...

  • 2018-08-19

    Angular 2 技能图谱 模块 自定义模块 根模块 特性模块 共享模块 核心模块 内置模块 Applicati...

  • 【时间管理100讲】精髓全在这里啦

    理论模块 精力管理。 行动管理。 学习模块。 高空模块。 反思模块。 运动模块。 阅读模块。 旅行模块。 人际关系...

  • python基础学习(三)

    常用模块 String模块 数学模块 随机模块 OS模块 os.path模块 re模块 常用函数及操作 列表操作 ...

  • day10-异常处理和pygame显示

    一、异常处理 1.模块 导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 ...

  • 重点知识复习(异常处理)

    1.模块 导入模块(自定义模块,第三方模块,系统其他模块)import 模块 ----> 模块.内容from 模...

  • Python常用模块

    Python常用模块之time模块 Python常用模块之os模块 Python常用模块之sys模块 Python...

  • nodejs-模块

    nodejs模块 一、nodejs模块分类 1.核心模块 Core Module、内置模块、原生模块 fs模块 p...

  • Python不同网络模块网页源代码的获取

    requests模块 或者使用 selenium模块 BeautifulSoup模块 urllib模块

网友评论

      本文标题:22.logging模块

      本文链接:https://www.haomeiwen.com/subject/xnococtx.html