码迷,mamicode.com
首页 > 其他好文 > 详细

logging模块

时间:2018-05-12 21:40:24      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:记录   Matter   ted   生成   lte   UNC   AC   模块   span   



import
logging # # # logging.warning("user [alex] attempted wrong password more than 3 times") # logging.critical("server is down") logging.basicConfig(filename=log_test.log, level=logging.DEBUG, format=%(asctime)s:%(levelname)s:%(filename)s:%(funcName)s:%(lineno)d:%(process)d %(message)s, datefmt=%Y-%m-%d %I:%M:%S %p) def sayhi(): logging.error("from sayhi....") sayhi() logging.debug(This message should go to the log file) logging.info(So should this) logging.warning(And this, too)
%(name)sLogger的名字
%(levelno)s 数字形式的日志级别
%(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 用户输出的消息

Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适:

  • logger提供了应用程序可以直接使用的接口;
  • handler将(logger创建的)日志记录发送到合适的目的输出;
  • filter提供了细度设备来决定输出哪条日志记录;
  • formatter决定日志记录的最终输出格式。

 

 

技术分享图片

 

 

四个类如何用:


import logging


class IgnoreBackupLogFilter(logging.Filter):
    """忽略带db backup 的日志"""
    def filter(self, record): #固定写法
        return  "db backup" not in record.getMessage()

#1、生成logger对象
logger = logging.getLogger(web)
logger.setLevel(logging.DEBUG)#设置输出级别

# 全局的输出级别是最高的,如果这里设置了,handler就没用了 全局如果不设置的话,就是warning

#要让handler有用,全局的级别要设到比handler最低


#1.1 把filter对象添加到logger中
logger.addFilter(IgnoreBackupLogFilter())

#2、生成 handler对象

ch = logging.StreamHandler()  #到屏幕的handler
ch.setLevel(logging.INFO)  #屏幕输出debug级别


fh = logging.FileHandler(web.log) #到文件的handler
fh.setLevel(logging.WARNING) #文件输出warning级别

#2.1 把handler对象绑定到logger

logger.addHandler(ch)
logger.addHandler(fh)

#3、生成formatter对象


file_formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s)
console_formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(lineno)d - %(message)s)

#3.1把formatter对象绑定handler对象

ch.setFormatter(console_formatter)  #和handler绑定
fh.setFormatter(file_formatter)

logger.debug("test log")
logger.info("test log2")
logger.info("test db backup log")
logger.warning("test log3")

 

logging模块

标签:记录   Matter   ted   生成   lte   UNC   AC   模块   span   

原文地址:https://www.cnblogs.com/yelublue/p/9029918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!