python-log-24

#LOG
-logging
-logging模块提供模块级别的函数记录日志
-包括四大组件

#日志相关概念
-日志
-日志的级别(level)
  -不同的用户关注不同的程序信息
  -DEBUG
  -INFO
  -NOTICE
  -WARNING
  -ERROR
  -CRITICAL
  -ALERT
  -EMERGENCT
-IO操作不要太频繁
-LOG的作用
  -调试
  -了解软件的运行情况
  -分析定位问题
-日志的信息
  -time
  -地点
  -level
  -内容
-成熟的第三方日志
  -log4j
  -log4php
  -logging

#2 logging模块
-日志级别
  -级别可自定义
  -DEBUG
  -INFO
  -WARNING
  -ERROR
  -CRITICAL
-初始化/写日志实例需要指定级别,只有当级别等于或高于指定级别才被记录
-使用方式
  -直接使用logging(封装了其他组件)
  -logging四大组件直接定制

# 2.1 logging模块级别的日志
-使用以下几个函数
  -logging.debug(msg,*args,**kwargs)创建一条严重级别为DEBUG的日志记录
  -logging.info(msg,*args,**kwargs)创建一条严重级别为INFO的日志记录
  -logging.warning(msg,*args,**kwargs)创建一条严重级别为WARNING的日志记录
  -logging.error(msg,*args,**kwargs)创建一条严重级别为ERROR的日志记录
  -logging.critical(msg,*args,**kwargs)创建一条严重级别为CRITICAL的日志记录
  -logging.log(level,*args,**kwargs)创建一条严重级别为LEVEL的日志记录
  -logging.basicConfig(**kwargs) 对root logger进行一次性配置

-logging.basicConfig(**kwargs) 对root logger进行一次性配置
  -只在第一次调用的时候起作用
  -不配置logger则使用默认值
    -输出:sys.stderr
    -级别:WARNING
    -格式:level:log_name:content

#案例-1
import logging
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
此时只会显示高于warning级别的日志

#定制日志
import logging
#定义日志的生成时间及日志的格式
LOG_FORMAT = "%(asctime)s....%(levelname)s....%(massage)s"
#显示所有级别的日志
logging.basicConfig(filename="pangqi.log",level=logging.DEBUG,format=LOG_FORMAT)

logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log."
此时可以显示以上所有日志,还可以加上日志生成的目录,以及定义日志的书写格式


#2.1 logging模块的处理流程
-四大组件
  -日志器(Logger):产生日志的一个接口
  -处理器(Handler):把产生的日志发送到相应的目的地
  -过滤器(Filter): 更精细地控制日志输出
  -格式器(Formatter):对输出的信息进行格式化
-Logger
  -产生一个日志
  -操作
    -Logger.setLevel()
    -Logger.addHandler()和Logger.removeHandler():为logger添加或移除对象
    -Logger.addFilter()和Logger.removeFilter():为logger添加或移除对象
    -Logger.debug:产生一条debug级别的日志,同理得到info/error等
    -Logger.exception():创建类似于Logger.error的日志消息
    -Logger.log():获取一个明确的日志level参数类创建一个日志记录
  -如何得到一个logger对象
    -实例化
    -logging.getLogger()

-Handler
  -把log发送到指定位置
  -方法
    -setLevel
    -setFormat
    -addFilter , removeFilter
  -不需要直接使用,Handler是基类
    logging.StreamHandler
    logging.FilterHandler
    logging.handlers.RotatingFileHandler
    logging.handlers.TimeRotatingFileHandler
    logging.handlers.HTTPHandler
    logging.handlers.SMTPHandler
    logging.NullHandler

-Format类
   -直接实例化
  -可以继承Format添加特殊内容
  -三个参数
    -fmt:指定消息格式化字符串
    -datefmt:指定日期格式字符串
    -style

-Filter类
  -可以被Handler和Logger使用
  -控制传递归来的信息的具体内容

import logging
import logging.handlers
import datetime

#定义logger
logger = logging.getLogger("mylogger")
logger.setLevel(logging.DEBUG)

猜你喜欢

转载自www.cnblogs.com/houziaipangqi/p/9637249.html