码迷,mamicode.com
首页 > 编程语言 > 详细

python之常用模块

时间:2018-06-10 21:34:54      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:elf   大文件   config   xxxx   它的   port   interval   handle   chat   

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之常用模块

标签:elf   大文件   config   xxxx   它的   port   interval   handle   chat   

原文地址:https://www.cnblogs.com/huizaia/p/9164441.html

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