使用logging打印日志到标准输出;默认是logging.warning模式;
将日志写入到文件,2种方式;
方式1:使用logging.baseConfig()将日志输入到文件,os.getcwd() #返回当前工作目录;
logging.basicConfig函数各参数:
filename:指定日志文件名;
filemode:和file函数意义相同,指定日志文件的打开模式,'w'或者'a';
format:指定输出的格式和内容,format可以输出很多有用的信息;
datefmt:指定时间格式;
level:设置日志级别,默认为logging.WARNING; WARNING /DEBUG
stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略;
方式2:使用logging.FileHandler("文件名称带后缀")
3.将日志输出到控制台和文件中;logging.StreamHandler();
自定义Logger
设置安装日志文件大小自动分割日志写入文件
import logging
from logging import handlers
class record(object):
level_relations={
'debug':logging.DEBUG,
'info':logging.INFO,
'warning':logging.WARNING,
'error':logging.ERROR,
'crit':logging.CRITICAL
}
def __init__(self,filename,level='warning',when='D',backCount=3,
fmt='%(asctime)s-%(pathname)s[line:%(lineno)d]-%(levelname)s:%(message)s'):
self.logger=logging.getLogger(filename)
format_str = logging.Formatter(fmt)
self.logger.setLevel(self.level_relations.get(level))
cons=logging.StreamHandler()
cons.setFormatter(format_str)
self.logger.addHandler(cons)
#定义一个RotatingFileHandler,最多备份5个日志文件,每个日志文件最大为1K
file=handlers.RotatingFileHandler(
filename=filename,mode='a',maxBytes=1024*1,
backupCount=5,encoding='utf-8') #1kb=1024*b #当些人文件为1kb时,会将文件后缀名增加.1
file.setFormatter(format_str)
self.logger.addHandler(file)
a=record('alllog.txt')
a.logger.warning('xixi hehe 学习')