Python中使用logging模块打印log日志详解-电脑资料_第1页
Python中使用logging模块打印log日志详解-电脑资料_第2页
Python中使用logging模块打印log日志详解-电脑资料_第3页
Python中使用logging模块打印log日志详解-电脑资料_第4页
Python中使用logging模块打印log日志详解-电脑资料_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Python中使用logging模块打印log日志详解-电脑资料这篇文章主要介绍了Python中使用logging模块打印log日志详解,本文讲解了logging模块介绍、基本使用方法、高级使用方法、使用实例等,需要的朋友可以参考下学一门新技术或者新语言,我们都要首先学会如何去适应这们新技术,其中在适应过程中,我们必须得学习如何调试程序并打出相应的log信息来,正所谓“只要10g打的好,没有bug解不了”,在我们熟知的一些信息技术中,log4xxx系列以及开发Androidapp时的android.util.Log包等等都是为了开发者更好的得到log信息服务的,logging模块介绍Pytho

2、n的logging模块提供了通用的日志系统,熟练使用logging模块可以方便开发者开发第三方模块或者是自己的Python应用。同样这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP、GET/POS,TSMTP,Socket等,甚至可以自己实现具体的日志记录方式。下文我将主要介绍如何使用文件方式记录log。logging模块包括logger,handler,filter,formatter这四个基本概念。logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过logging.getLogger(name)获取logger

3、对象,如果不指定name贝U返回root对象,多次使用相同的name调用getLogger方法返回同一个logger对象。handler:将日志记录(logrecord)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。filter:提供一种优雅的方式决定一个日志记录是否发送到handler。formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选

4、的。基本使用方法一些小型的程序我们不需要构造太复杂的log系统,可以直接使用logging模块的basicConfig函数即可,代码如下:代码如下:Createdon2012-8-12author:walfredmodule:loggingmodule.BasicLoggerimportlogginglog_file="./basic_logger.log"logging.basicConfig(filename=log_file,level=logging.DEBUG)logging.debug("thisisadebugmsg!")logging.i

5、nfo("thisisainfomsg!")logging.error("thisisaerrormsg!")logging.critical("thisisacriticalmsg!")运行程序时我们就会在该文件的当前目录下发现basic_logger.log文件,查看basic_logger.log内容如下:代码如下:INFO:root:thisisainfomsg!DEBUG:root:thisisadebugmsg!WARNING:root:thisisawarnmsg!ERROR:root:thisisaerrormsg!C

6、RITICAL:root:thisisacriticalmsg!需要说明的是我将level设定为DEBUGS,所以log日志中只显示了包含该级别及该级别以上的log信息。信息级别依次是:notset、debug、info、warn、error、critical。如果在多个模块中使用这个配置的话,只需在主模块中配置即可,其他模块会有相同的使用效果。较高级版本上述的基础使用比较简单,没有显示出logging模块的厉害,适合小程序用,现在我介绍一个较高级版本的代码,我们需要依次设置logger、handler、formatter等配置。代码如下:Createdon2012-8-12author:wa

7、lfredmodule:loggingmodule.NomalLoggerimportlogginglog_file="./nomal_logger.log"log_level=logging.DEBUGlogger=logging.getLogger("loggingmodule.NomalLogger")handler=logging.FileHandler(log_file)formatter=logging.Formatter("%(levelname)s%(funcName)s%(asctime)s%(message)s")

8、handler.setFormatter(formatter)logger.addHandler(handler)logger.setLevel(log_level)#testlogger.debug("thisisadebugmsg!")("thisisainfomsg!")logger.warn("thisisawarnmsg!")logger.error("thisisaerrormsg!")logger.critical("thisisacriticalmsg!")

9、这时我们查看当前目录的nomal_logger.log日志文件,如下:代码如下:DEBUG2012-08-1217:43:59,295thisisadebugmsg!INFO2012-08-1217:43:59,295thisisainfomsg!WARNING2012-08-1217:43:59,295thisisawarnmsg!ERROR2012-08-1217:43:59,295thisisaerrormsg!CRITICAL2012-08-1217:43:59,295thisisacriticalmsg!F面的最终版本Logger 类,代这个对照前面介绍的logging模块,不难理解

10、,下面的最终版本将会更加完整,完善版本这个最终版本我用singleton设计模式来写一个码如下:代码如下:Createdon2012-8-12author:walfredmodule:loggingmodule.FinalLoggerimportlogging.handlersclassFinalLogger:logger=Nonelevels="n":logging.NOTSET,"d":logging.DEBUG,"i":logging.INFO,"w":logging.WARN,"e":l

11、ogging.ERROR,"c":logging.CRITICALlog_level="d"log_file="final_logger.log"log_max_byte=10*1024*1024;log_backup_count=5staticmethoddefgetLogger():ifFinalLogger.loggerisnotNone:returnFinalLogger.loggerFinalLogger.logger=logging.Logger("oggingmodule.FinalLogger")l

12、og_handler=logging.handlers.RotatingFileHandler(filenambackupCount=FinalLogger.log_backup_count)log_fmt=logging.Formatter("%(levelname)s%(funcName)s%(asctime)s%(message)s")log_handler.setFormatter(log_fmt)FinalLogger.logger.addHandler(log_handler)FinalLogger.logger.setLevel(FinalLogger.lev

13、els.get(FinalLogger.log_level)returnFinalLogger.loggerif_name_="_main_":logger=FinalLogger.getLogger()logger.debug("thisisadebugmsg!")("thisisainfomsg!")logger.error("thisisaerrormsg!")logger.critical("thisisacriticalmsg!")当前目录下的final_logger.log内容如下:代码如下:DEBUG2012-08-1218:12:23,029thisisadebugmsg!INFO2012-08-1218:12:23,029thisisainfomsg!WARNING2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论