冷月葬花魂 发表于 2015-1-14 21:16:36

带来一篇python 的日记logging模块进修

小知识:CentOS商业化干掉红帽才是出路?

1.复杂的将日记打印到屏幕


importlogging

logging.debug(Thisisdebugmessage)
logging.info(Thisisinfomessage)
logging.warning(Thisiswarningmessage)

屏幕上打印:
WARNING:root:Thisiswarningmessage
默许情形下,logging将日记打印到屏幕,日记级别为WARNING;
日记级别巨细干系为:CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTSET,固然也能够本人界说日记级别。
2.经由过程logging.basicConfig函数对日记的输入格局及体例做相干设置

importlogging

logging.basicConfig(level=logging.DEBUG,
format=%(asctime)s%(filename)s%(levelname)s%(message)s,
datefmt=%a,%d%b%Y%H:%M:%S,
filename=myapp.log,
filemode=w)

logging.debug(Thisisdebugmessage)
logging.info(Thisisinfomessage)
logging.warning(Thisiswarningmessage)

./myapp.log文件中内容为:
Sun,24May200921:48:54demo2.pyDEBUGThisisdebugmessage
Sun,24May200921:48:54demo2.pyINFOThisisinfomessage
Sun,24May200921:48:54demo2.pyWARNINGThisiswarningmessage
logging.basicConfig函数各参数:
filename:指定日记文件名
filemode:和file函数意义不异,指定日记文件的翻开形式,w或a
format:指定输入的格局和内容,format能够输入良多有效信息,如上例所示:
%(levelno)s:打印日记级其余数值
%(levelname)s:打印日记级别号称
%(pathname)s:打印以后实行步伐的路径,实在就是sys.argv
%(filename)s:打印以后实行步伐名
%(funcName)s:打印日记确当前函数
%(lineno)d:打印日记确当前行号
%(asctime)s:打印日记的工夫
%(thread)d:打印线程ID
%(threadName)s:打印线程称号
%(process)d:打印历程ID
%(message)s:打印日记信息
datefmt:指准时间格局,同time.strftime()
level:设置日记级别,默许为logging.WARNING
stream:指定将日记的输入流,能够指定输入到sys.stderr,sys.stdout大概文件,默许输入到sys.stderr,当stream和filename同时指准时,stream被疏忽
3.将日记同时输入到文件和屏幕

importlogging

logging.basicConfig(level=logging.DEBUG,
format=%(asctime)s%(filename)s%(levelname)s%(message)s,
datefmt=%a,%d%b%Y%H:%M:%S,
filename=myapp.log,
filemode=w)

#################################################################################################
#界说一个StreamHandler,将INFO级别或更高的日记信息打印到尺度毛病,并将其增加到以后的日记处置工具#
console=logging.StreamHandler()
console.setLevel(logging.INFO)
formatter=logging.Formatter(%(name)-12s:%(levelname)-8s%(message)s)
console.setFormatter(formatter)
logging.getLogger().addHandler(console)
#################################################################################################

logging.debug(Thisisdebugmessage)
logging.info(Thisisinfomessage)
logging.warning(Thisiswarningmessage)

屏幕上打印:
root:INFOThisisinfomessage
root:WARNINGThisiswarningmessage
./myapp.log文件中内容为:
Sun,24May200921:48:54demo2.pyDEBUGThisisdebugmessage
Sun,24May200921:48:54demo2.pyINFOThisisinfomessage
Sun,24May200921:48:54demo2.pyWARNINGThisiswarningmessage
4.logging之日记回滚

importlogging
fromlogging.handlersimportRotatingFileHandler

#################################################################################################
#界说一个RotatingFileHandler,最多备份5个日记文件,每一个日记文件最年夜10M
Rthandler=RotatingFileHandler(myapp.log,maxBytes=10*1024*1024,backupCount=5)
Rthandler.setLevel(logging.INFO)
formatter=logging.Formatter(%(name)-12s:%(levelname)-8s%(message)s)
Rthandler.setFormatter(formatter)
logging.getLogger().addHandler(Rthandler)
################################################################################################
从上例和本例能够看出,logging有一个日记处置的主工具,别的处置体例都是经由过程addHandler增加出来的。
logging的几种handle体例以下:

logging.StreamHandler:日记输入到流,能够是sys.stderr、sys.stdout大概文件
logging.FileHandler:日记输入到文件
日记回滚体例,实践利用时用RotatingFileHandler和TimedRotatingFileHandler
logging.handlers.BaseRotatingHandler
logging.handlers.RotatingFileHandler
logging.handlers.TimedRotatingFileHandler
logging.handlers.SocketHandler:近程输入日记到TCP/IPsockets
logging.handlers.DatagramHandler:近程输入日记到UDPsockets
logging.handlers.SMTPHandler:近程输入日记到邮件地点
logging.handlers.SysLogHandler:日记输入到syslog
logging.handlers.NTEventLogHandler:近程输入日记到WindowsNT/2000/XP的事务日记
logging.handlers.MemoryHandler:日记输入到内存中的制订buffer
logging.handlers.HTTPHandler:经由过程"GET"或"POST"近程输入到HTTP办事器

因为StreamHandler和FileHandler是经常使用的日记处置体例,以是间接包括在logging模块中,而其他体例则包括在logging.handlers模块中,
上述别的处置体例的利用请拜见python2.5手册!
5.经由过程logging.config模块设置日记

#logger.conf
###############################################

keys=root,example01,example02

level=DEBUG
handlers=hand01,hand02

handlers=hand01,hand02
qualname=example01
propagate=0

handlers=hand01,hand03
qualname=example02
propagate=0
###############################################

keys=hand01,hand02,hand03

class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)

class=FileHandler
level=DEBUG
formatter=form01
args=(myapp.log,a)

class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=(myapp.log,a,10*1024*1024,5)
###############################################

keys=form01,form02

format=%(asctime)s%(filename)s%(levelname)s%(message)s
datefmt=%a,%d%b%Y%H:%M:%S

format=%(name)-12s:%(levelname)-8s%(message)s
datefmt=
上例3:
importlogging
importlogging.config

logging.config.fileConfig("logger.conf")
logger=logging.getLogger("example01")

logger.debug(Thisisdebugmessage)
logger.info(Thisisinfomessage)
logger.warning(Thisiswarningmessage)
上例4:
importlogging
importlogging.config

logging.config.fileConfig("logger.conf")
logger=logging.getLogger("example02")

logger.debug(Thisisdebugmessage)
logger.info(Thisisinfomessage)
logger.warning(Thisiswarningmessage)
6.logging是线程宁静的

from:http://blog.csdn.net/yatere/article/details/6655445



小知识:Linux在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。

金色的骷髅 发表于 2015-1-17 09:10:36

编程学习及开发,Linux是免费,开源的操作系统,并且可开发工具相当多,如果您支持自由软件,一定要同广大热爱自由软件人士一同为其不懈努力。

兰色精灵 发表于 2015-1-24 16:50:37

对我们学习操作系统有很大的帮助,加深我们对OS的理解。?

愤怒的大鸟 发表于 2015-2-2 12:41:00

Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。

乐观 发表于 2015-2-7 21:47:19

为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?

精灵巫婆 发表于 2015-2-23 20:54:21

说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?

若相依 发表于 2015-3-7 11:16:53

Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。

蒙在股里 发表于 2015-3-15 07:08:50

在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。

爱飞 发表于 2015-3-21 23:24:14

对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。
页: [1]
查看完整版本: 带来一篇python 的日记logging模块进修