• Python--logging日志


    日志等级:

      由高到底:critical、error、warning、info、debug、notset

      默认情况下,日志级别在WARNING及以上的日志输出到标准输出。

    -----------------------------------------------------------------------------------------------------------------

    记录器(Logger):提供日志相关功能的调用接口

    处理器(Handler):将日志发送到合适的目的地

    格式化器(Formatter):指明输出的日志记录的格式

    过滤器(Filter):决定输出日志记录的粒度

    -----------------------------------------------------------------------------------------------------------------

    Logger:

    创建实例:logger = logging.getLogger('example')

      默认的日志级别是WARNING,默认的处理器是StreamHandler(即日志信息输出到标准输出),默认的格式化器Formatter(logging level:instance name:logging message)。

    Handler:

      通过Logger对象的addHandler()方法为Logger对象添加0个或多个Handler的子类对象,将日志信息输出到设置的地方。

    Formatter

      用于设置日志输出的格式,可直接初始化对象,即formatter=logging.Formatter(fmt=None, datefmt=None)。默认的日志格式fmt%(asctime)s - %(levelname)s - %(messages),默认的时间格式datefmt%Y-%m-%d %H:%M:%S

    Filter

      可用于Logger对象或Handler对象,用于提供比日志等级更加复杂的日志过滤方式。Filter在日志功能配置中是非必须的,对日志消息过滤需求比较复杂时配置使用。

    -----------------------------------------------------------------------------------------------------------------

    3种方法配置日志:
      a. 在Python代码中显示创建Logger,Handler,Formatter和Filter对象,并调用各对象的配置函数进行日志配置
      b. 将配置信息写到配置文件,通过读取配置文件进行日志配置
      c. 将配置信息写到Dict,通过读取配置字典进行日志配置

    -----------------------------------------------------------------------------------------------------------------

     Simple_Example:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time : 2018/01/24 9:57
    # @Author : qf
    # @Site :
    # @File : mylogger.py
    # @Software: PyCharm Community Edition
    import logging
    from logging.handlers import TimedRotatingFileHandler
    import os
    from utils import timeutilQF


    # path = os.getcwd()
    pathdir = os.path.dirname(os.getcwd())
    datefile = timeutilQF.get_date()

    # LOG_FILE = pathdir + '\log\' + datefile + '.log'
    # LOG_FILE = 'F:\myProject\QFAutoFrame\log\default.log'

    qf_formatter = logging.Formatter(
    '%(asctime)s %(levelname)s %(threadName)s[%(thread)d] %(filename)s[line:%(lineno)d] : %(message)s')

    qf_sh = logging.StreamHandler()
    # qf_sh.setLevel(logging.WARNING)
    qf_sh.setLevel(logging.INFO)
    qf_sh.setFormatter(qf_formatter)

    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    logger.addHandler(qf_sh)

    LOG_FILE = pathdir + '\log\' + datefile + '.log'
    qf_tfh = TimedRotatingFileHandler(LOG_FILE, when="midnight", encoding='utf-8')
    qf_tfh.setLevel(logging.INFO)
    qf_tfh.setFormatter(qf_formatter)
    logger.addHandler(qf_tfh)
  • 相关阅读:
    ASP.NET 2.0 用户注册控件的密码验证问题
    编程使用GridView,DataList的模版列
    在您的站点上添加 Windows Live Favourites 收藏入口
    推荐个很好玩的开源项目Ascii Generator dotNET
    Castle ActiveRecord 在Web项目和WinForm项目中
    HTML解析器项目进展和新的构思
    SilverLight 的跨域跨域访问
    SQL 语句之Join复习
    【笔记】提高中文分词准确性和效率的方法
    ASP.NET 动态加载控件激发事件的问题
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/8341509.html
Copyright © 2020-2023  润新知