zoukankan      html  css  js  c++  java
  • logging模块1

    logging模块 --logging模块提供通用的日志系统

    Logging模块提供Logger,handler,filter,formatter

    1. Logger:记录器
      • 应用程序代码能直接调用日志接口。
      • Logger最常用的操作有两类:配置和发送日志消息。
      • 初始化 logger = logging.getLogger("endlesscode"),获取logger对象,getLogger()方法后面最好加上所要日志记录的模块名字,配置文件和打印日志格式中的%(name)s 对应的是这里的模块名字,如果不指定name则返回root对象。
      • logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志
      • 级别 何时使用
        DEBUG 详细信息,典型地调试问题时会感兴趣
        INFO 证明事情按预期工作
        WARNING 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作
        ERROR 由于更严重的问题,软件已不能执行一些功能了
        CRITICAL 严重错误,表明软件已不能继续运行了
      • 多次使用相同的name调用getLogger方法返回同一个looger对象;
    2. handler:处理器
      • 将(记录器产生的)日志记录(log record)发送至合适的目的地(destination),比如文件,socket等。
      • Handler常用的是StreamHandler和FileHandler,可以简单理解为一个是console和文件日志,一个打印在调试窗口上,一个记录在一个文件上
      • 一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。
    3. filter:过滤器
      • 提供更好的粒度控制,它可以决定输出哪些日志记录
    4. formatter:格式化器
      • 指明最终输出中日志记录的布局。
      • 指定日志记录输出的具体格式。
      • formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。
      • 喜欢用这样的格式 '[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S'

    Logger 记录器
    Logger是一个树形层级结构,在使用接口debug,info,warn,error,critical之前必须创建Logger实例

    创建方法: logger = logging.getLogger(logger_name)
    

    Handler 处理器
    Handler处理器类型有很多种,比较常用的有三个,StreamHandler,FileHandler,NullHandler,详情可以访问Python logging.handlers
    创建StreamHandler之后,可以通过使用以下方法设置日志级别,设置格式化器Formatter,增加或删除过滤器Filter。

    创建方法: sh = logging.StreamHandler(stream=None)
    

    FileHandler

    创建方法: fh = logging.FileHandler(filename, mode='a', encoding=None, delay=False)
    

    Formatter 格式化器
    使用Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S。

    创建方法: formatter = logging.Formatter(fmt=None, datefmt=None)
    

    其中,fmt是消息的格式化字符串,datefmt是日期字符串。如果不指明fmt,将使用'%(message)s'。如果不指明datefmt,将使用ISO8601日期格式。
    有用的format格式

    格式 描述
    %(levelno)s 打印日志级别的数值
    %(levelname)s 打印日志级别名称
    %(pathname)s 打印当前执行程序的路径
    %(filename)s 打印当前执行程序名称
    %(funcName)s 打印日志的当前函数
    %(lineno)d 打印日志的当前行号
    %(asctime)s 打印日志的时间
    %(thread)d 打印线程id
    %(threadName)s 打印线程名称
    %(process)d 打印进程ID
    %(message)s 打印日志信息

    Filter 过滤器
    Handlers和Loggers可以使用Filters来完成比级别更复杂的过滤。Filter基类只允许特定Logger层次以下的事件。例如用‘A.B’初始化的Filter允许Logger ‘A.B’, ‘A.B.C’, ‘A.B.C.D’, ‘A.B.D’等记录的事件,logger‘A.BB’, ‘B.A.B’ 等就不行。 如果用空字符串来初始化,所有的事件都接受。

    创建方法: filter = logging.Filter(name='')
    

    [参考](https://www.cnblogs.com/ranxf/p/7794240.html)

  • 相关阅读:
    存储过程
    springMVC学习
    springMVC学习
    学习之hibernate下册
    学习hibernate上册
    学习Struts2框架之下册
    学习Struts2框架上册
    四道java语言练习基础题:
    在开发第一个Android应用之前需要知道的5件事:
    JAVA程序员必须要学习的知识
  • 原文地址:https://www.cnblogs.com/jingxindeyi/p/12961537.html
Copyright © 2011-2022 走看看