微博关键词排名优化,搜索引擎排名优化价格,黄岛建设厅官方网站,googleplay官方下载我们在写程序的时候经常会打一些日志来帮助我们查找问题#xff0c;这次学习一下logging模块#xff0c;在python里面如何操作日志。介绍一下logging模块#xff0c;logging模块就是python里面用来操作日志的模块#xff0c;logging模块中主要有4个类#xff0c;分别负责不…我们在写程序的时候经常会打一些日志来帮助我们查找问题这次学习一下logging模块在python里面如何操作日志。介绍一下logging模块logging模块就是python里面用来操作日志的模块logging模块中主要有4个类分别负责不同的工作 Logger 记录器暴露了应用程序代码能直接使用的接口简单点说就是一个创建一个办公室让人在里头工作 Handler 处理器将记录器产生的日志记录发送至合适的目的地这个简单点说就是办事的人你可以指定是让在控制输出日志还是在文件里面打印日志常用的有4种 StreamHandler 控制台输出 FileHandler 文件输出 下面两种需要导入 handlers from logging import handlers TimedRotatingFileHandler 按照时间自动分割日志文件 RotatingFileHandler 按照大小自动分割日志文件一旦达到指定的大小重新生成文件 Filter过滤器提供了更好的粒度控制它可以决定输出哪些日志记录。不常用 Formatter格式化器指明了最终输出中日志记录的布局。指定输出日志的格式 import logging
from logging import handlers
#只在控制台打印日志
logging.basicConfig(levellogging.ERROR,#控制台打印的日志级别format%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s#日志格式)
logging.debug(debug级别最低级别一般开发人员用来打印一些调试信息)
logging.info(info级别正常输出信息一般用来打印一些正常的操作)
logging.warning(waring级别一般用来打印警信息)
logging.error(error级别一般用来打印一些错误信息)
logging.critical(critical级别一般用来打印一些致命的错误信息) 日志级别 debug info warning error critical设置了日志级别之后会打印该级别以及比该级别高的所有日志举个例子如果日志级别是warning那么就会打印warning、error、critical这三个级别的日志不会打印debug和info级别的如果是debug最低级别的日志那么所有的日志都会打印。上面的只是在控制台打印日志并没有把日志写在文件里面一般我们都会把日志写在日志文件里面也很简单只需要加个参数指定文件名就行了。 logging.basicConfig(levellogging.ERROR,#控制台打印的日志级别filenamelog.txt,#文件名filemodea,#模式有w和aw就是写模式每次都会重新写日志覆盖之前的日志#a是追加模式默认如果不写的话就是追加模式format%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s#工作中常用的日志格式)
logging.debug(debug级别最低级别一般开发人员用来打印一些调试信息)
logging.info(info级别正常输出信息一般用来打印一些正常的操作)
logging.warning(waring级别一般用来打印警信息)
logging.error(error级别一般用来打印一些错误信息)
logging.critical(critical级别一般用来打印一些致命的错误信息) 加上文件名之后就会发现控制台不会输出日志了日志文件也产生了那么如何既在控制台输出日志也在文件中写入呢 怎么实现呢就得有个办公室里面塞俩人一个给负责往控制台输出日志一个负责写文件你把他俩往办公室一塞他俩就能干活了。 import logging
from logging import handlers
logger logging.getLogger(my_log)
#先创建一个logger对象相当于这个办公室也就是上面说的Logger
logger.setLevel(logging.INFO)#设置日志的总级别
fh logging.FileHandler(test.log,modea,encodingutf-8)#创建一个文件处理器也就是把日志写到文件里头
fh.setLevel(logging.INFO)#设置文件输出的级别
sh logging.StreamHandler()#创建一个控制台输出的处理器这两个就是上面说的Handler
sh.setLevel(logging.INFO)
#设置控制台输出的日志级别这两个级别都可以单独设置他们俩和logger的级别区别是如果logger设置的级别比里面的handler级别设置的高那么就以logger的级别为准
th handlers.TimedRotatingFileHandler(time,whenS,interval1,backupCount2)
#指定间隔时间自动生成文件的处理器
#interval是时间间隔backupCount是备份文件的个数如果超过这个超过这个个数就会自动删除when是间隔的时间单位单位有以下几种# S 秒# M 分# H 小时、# D 天、# W 每星期interval0时代表星期一# midnight 每天凌晨
th.setLevel(logging.INFO)
formater logging.Formatter(%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s)
#指定日志格式上面咱们写了常用的格式直接指定了就行了这也就是咱们上面说的Formatter
sh.setFormatter(formater)
fh.setFormatter(formater)
th.setFormatter(formater)
#设置两个处理器的日志格式logger.addHandler(sh)
logger.addHandler(fh)
logger.addHandler(th)
#把两个handler加入容器里头相当于把工作人员培训完了你们可以上班了
logger.debug(debug级别最低级别一般开发人员用来打印一些调试信息)
logger.info(info级别正常输出信息一般用来打印一些正常的操作)
logger.warning(waring级别一般用来打印警信息)
logger.error(error级别一般用来打印一些错误信息)
logger.critical(critical级别一般用来打印一些致命的错误信息) 这样logger这个日志办公室已经搞好了咱们就可以直接用了运行完发现文件也产生了控制台也有日志。如果不设置日志级别的话默认级别是waring。下面我们自己封装一个类来使用logging模块方便使用默认加一些配置 import logging
from logging import handlers
class MyLogger():def __init__(self,file_name,levelinfo,backCount5,whenM):logger logging.getLogger() # 先实例化一个logger对象先创建一个办公室logger.setLevel(self.get_level(level)) # 设置日志的级别的人cl logging.StreamHandler() # 负责往控制台输出的人bl handlers.TimedRotatingFileHandler(filenamefile_name, whenwhen, interval1, backupCountbackCount, encodingutf-8)fmt logging.Formatter(%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s) #时间 #打印哪个python文件的第几行 #日志级别 #打印的信息cl.setFormatter(fmt) # 设置控制台输出的日志格式bl.setFormatter(fmt) # 设置文件里面写入的日志格式logger.addHandler(cl)logger.addHandler(bl)self.logger loggerdef get_level(self,str):level {debug:logging.DEBUG,info:logging.INFO,warn:logging.WARNING,error:logging.ERROR}str str.lower()return level.get(str)
if __name__ __main__:lw_log MyLogger(lw.log,debug,whenM)lw_log.logger.warning(哈哈哈) 由于logging模块用起来实在是费劲所以牛教授自己封装了一个日志模块供大家使用非常方便只需要直接pip install nnlog即可 使用例子如下代码 import nnlog
log nnlog.Logger(file_namemy.log,leveldebug,whenD,backCount5,interval1)
#file_name是日志文件名
#level是日志级别如果不传的话默认是debug级别
#when是日志文件多久生成一个默认是按天S 秒、M 分、 H 小时、 D 天、 W 每星期
#backCount是备份几个日志文件默认保留5天的
#interval是间隔多久生成一个日志文件默认是1天
log.debug(默认日志级别是debug)
log.info(info级别)
log.warning(waring级别)
log.error(error级别)log2 nnlog.Logger(file_namenn.log) #直接传入文件名也是ok的其他的就取默认值了
log2.debug(test) 转载于:https://www.cnblogs.com/mululu/p/9121770.html