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)

 

posted on 2018-01-24 14:33  我要的明天  阅读(161)  评论(0编辑  收藏  举报

导航