Python进阶(四)-日志

一、logging是什么?作用是什么?

logging是python自带的一个日志模块。

它的作用主要有两个:

1)代替print,可以把大部分你想要调试的信息打印出来或者是输出到指定文件 

2)可以对一些输出的调试信息分类做输出,比如说:DEBUG,INFO,WARING,ERROR,CRITICAL

二、logging模块介绍与使用

python使用logging模块记录日志涉及四个主要类,每个类用法如下:

1.logger提供了应用程序可以直接使用的接口

2.handler将(logger创建的)日志记录发送合适的目的输出

3.setLevel提供了细度设备来决定输出哪种级别的日志记录

4.formatter决定日志记录的最终输出格式

三、logger介绍

logger是后续程序可以直接调用的接口,如果不去创建一个logger的话,那么就会默认调用root-logger,因为logger在日志系统里面是有父级和子级的,如果没有创建一个新的logger子级,那么打印日志的时候会直接调用父级。常用方法:getLogger()

 

 

 

  

 

四、Setlevel的介绍

我们一般用SetLevel设置日志的输出级别。

1)logging有如下级别:DEBUG,INFO,WARING,ERROR,CRITICAL--->级别正序越来越高。默认级别是WARING

2)logging模块只会输出指定level以上的日志

3)用法:Logger.debug(),Logger.info(),Logger.warning(),Logger.error(),Logger.critical()可以设置的日志级别

这样的好处,就是在项目开发时debug用的log,我们想要什么级别的日志,不需要去改代码,只需要在这个级别设置改变日志的输出级别就可了。

五、logging内容

1.logging模块-主要为一下三个方面

  日志级别

  日志内容输出格式

  日志输出方式

2.日志级别

critical>error>warning>info>debug,notset

级别越高打印的日志越少

六、logging模块handler

StreamHandler

日志信息会输出到指定的stream中,如果stream为空则默认输出到sys.stderr,即控制台

FileHandler

继承自StreamHandler,将日志信息输出到磁盘文件上

默认情况下,日志文件可以无限大

七、logging之handler扩展

logging模块中的handlers模块专门处理日志输出的

常用handlers:

RotatingFileHander:支持循环日志文件。

maxBytes:允许日志文件在达到maxBytes时rollover。当文件大小达到或者超过maxBytes时就会新创建一个日志文件

backupCount:备份数目,也就是最多能有多少个备份。命名会在日志的base_name后面加上.0-.n的后缀

 

TimedRotatingFileHandler:在RotatingFileHander的基础上,支持定时生成新的日志文件

when:时间间隔类型

八、logging之Formatter

logging.Formatter

用来设置在控制台或者文件中,日志内容的呈现方式。

在创建Formatter对象的时候有如下两个参数:

fmt:日志中具体输出那些内容:日志生成的时间?所在文件?所在代码行?等

fmt = '%(asctime)s %(filename)s %(funcName)s [line: %(lineno)d] %(levelname)s %(message)s'

datafmt:时间格式。默认格式:%Y-%m-%d %H:%M:%S

datafmt='%Y-%m-%d %H:%M:%S'

注:在Formatter类中有说明fmt可以选用的选项

九、步骤总结

1.创建一个日志收集器logger=logging.getlogger()

2.创建一个handler   :以下的任意类型都可以  handler=logging.FileHandler(filename,mode="w")

FileHandler:输出到文件中

RotatingFileHandler:输出到文件中

StreamHandler:输出到控制台

3、1)设置Formatter,其中有两个参数:fmt和datafmt 

  fm= logging.Formatter(fmt,datdafmt)

  handler.SetFormatter(fm)

   2)设置输出级别:SetLevel

  handler.SetLevel(logging.INFO)

4.将handler加入到logging中:logger.addHandler(handler)


 

posted @ 2018-08-10 10:15  sinder2018  阅读(40)  评论(0)    收藏  举报