python之常用模块

Posted 辉辉辉辉a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之常用模块相关的知识,希望对你有一定的参考价值。

1.logging模块

1.1logging模块的级别

debug 调试
info 记录
warning 潜在危险
error 报错
critical 严重的

 

1.2在文件中输出日志

import logging
logging.basicConfig(filename=log.test.log,
                    level=logging.INFO,#只有比设定的等级高或者和设定的等级一样才会显示????
                    format=%(asctime)s%(message)s,
                    datefmt=%yY-%m-%d%I:%M:%s%P)

logging.info(My name is Gao hui)
logging.debug(My name is hong yan)
logging.warning(My name is Alex Li)

 

1.3在文件和屏幕中同时输出日志

import logging

#1.生成logger对象
logger = logging.getLogger("gao")#创建日志对象
logger.setLevel(logging.INFO) #设置全局等级

#2.生成hanlder
console = logging.StreamHandler()#日志以屏幕形式输出
console.setLevel(logging.WARNING)#设置屏幕等级

#text = logging.FileHandler("gao.log")#日志以文件格式输出
text.setLevel(logging.WARNING)#设置文件等级

#2.1把handle对象绑定到logger
logger.addHandler(console)
logger.addHandler(text)


#3.生成formatter对象
console_formatter = logging.Formatter(%(name)s - %(asctime)s - %(module)s - %(levelname)s - %(message)s)

file_formatter = logging.Formatter(%(name)s - %(asctime)s - %(module)s - %(levelname)s - %(message)s)

console.setFormatter(console_formatter)
text.setFormatter(file_formatter)


logger.warning("test1")
logger.info("test2")

 

1.4用filter过滤

import logging
from logging import handlers
class IgnoreBackupLogFilter(logging.Filter):
    ‘‘‘忽略带db backup的日志‘‘‘
    def filter(self, record):#固定写法
        return "db backup" in record.getMessage()#如果日志里有db backup,那就过滤,没有就显示日志


#1.生成logger对象
logger = logging.getLogger("gao")#创建日志对象
logger.setLevel(logging.INFO) #设置全局等级


#2.生成hanlder
console = logging.StreamHandler()#日志以屏幕形式输出
console.setLevel(logging.WARNING)#设置屏幕等级

#text = logging.FileHandler("gao.log")#日志以文件格式输出
text.setLevel(logging.WARNING)#设置文件等级

#2.1把handle对象绑定到logger
logger.addHandler(console)
logger.addHandler(text)


#3.生成formatter对象
console_formatter = logging.Formatter(%(name)s - %(asctime)s - %(module)s - %(levelname)s - %(message)s)

file_formatter = logging.Formatter(%(name)s - %(asctime)s - %(module)s - %(levelname)s - %(message)s)

console.setFormatter(console_formatter)
text.setFormatter(file_formatter)


logger.warning("test1")
logger.info("test2")
logging.warning("####")#如果xxxx里有db backup,那就过滤,没有就显示日志

 

1.5 RotatingFileHandler

当文件到达一定大小后,它会自动将当前日志文件改名,然后创建一个新的同名日志文件继续输出。当chat.log 达到指定的大小之后,RotatingFileHandler自动把文件改名为 chat.log.1。不过,如果chat.log1 重命名为 chat.log2, 最后重新创建 chat.log 继续输出日志情况。它的函数是:

RotatingFileHandler (filename [, mode[,  maxBytes [,  backupCount]]])

maxBytes用于制定日志文件的最大文件大小。如果maxbytes 为0,意味着日志文件可以无限大,这时上面描述的重命名过程就不会发生。

backCount 用于指定保留的备份文件的个数。比如:如果指定为2,但上面描述的重命名过程发生时,原有的 chat.log.2 并不会被更名,而是被删除。

import logging
from logging import handlers

#1.生成logger对象
logger = logging.getLogger("gao")#创建日志对象
logger.setLevel(logging.INFO) #设置全局等级


#2.生成hanlder
console = logging.StreamHandler()#日志以屏幕形式输出
console.setLevel(logging.WARNING)#设置屏幕等级

text = handlers.RotatingFileHandler("gao.log",maxBytes=3,backupCount=6)#字节,log次数
text.setLevel(logging.WARNING)#设置文件等级

#2.1把handle对象绑定到logger
logger.addHandler(console)
logger.addHandler(text)


#3.生成formatter对象
console_formatter = logging.Formatter(%(name)s - %(asctime)s - %(module)s - %(levelname)s - %(message)s)

file_formatter = logging.Formatter(%(name)s - %(asctime)s - %(module)s - %(levelname)s - %(message)s)

console.setFormatter(console_formatter)
text.setFormatter(file_formatter)


logger.warning("test1")
logger.info("test2")

  

 

1.6 TimeRotatingFileHandler

通过时间间隔一定时间就自动创建新的日志文件。重命名的过程与RotatingFileHandler类似,不过新的文件不是附加数字,而是当前时间。它的函数是:

RotatingFileHandler (filename[, when [,  interval [,  backupCount]]

其中filename 参数和backupCount 参数和 RotatingFileHandler 具有相同的意义。

interval 是时间间隔

when 参数是一个字符串。表示时间间隔的单位,不区分大小写,它有以下取值:

S  秒

M  分

H  小时

D  天

W  每星期(interval = 0 时代表星期一)

midnight 每天凌晨

import logging
from logging import handlers

#1.生成logger对象
logger = logging.getLogger("gao")#创建日志对象
logger.setLevel(logging.INFO) #设置全局等级


#2.生成hanlder
console = logging.StreamHandler()#日志以屏幕形式输出
console.setLevel(logging.WARNING)#设置屏幕等级

text = handlers.TimedRotatingFileHandler("gao.log", when="10", interval=5, backupCount=6)
text.setLevel(logging.WARNING)#设置文件等级

#2.1把handle对象绑定到logger
logger.addHandler(console)
logger.addHandler(text)


#3.生成formatter对象
console_formatter = logging.Formatter(%(name)s - %(asctime)s - %(module)s - %(levelname)s - %(message)s)

file_formatter = logging.Formatter(%(name)s - %(asctime)s - %(module)s - %(levelname)s - %(message)s)

console.setFormatter(console_formatter)
text.setFormatter(file_formatter)


logger.warning("test1")
logger.info("test2")

 





以上是关于python之常用模块的主要内容,如果未能解决你的问题,请参考以下文章

Python学习—基础篇之常用模块

Python之常用模块学习

python之模块和包

python之模块和包

python 之常用模块

Python之常用模块