|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识: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[line:%(lineno)d]%(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.py[line:11]DEBUGThisisdebugmessage
Sun,24May200921:48:54demo2.py[line:12]INFOThisisinfomessage
Sun,24May200921:48:54demo2.py[line:13]WARNINGThisiswarningmessage
logging.basicConfig函数各参数:
filename:指定日记文件名
filemode:和file函数意义不异,指定日记文件的翻开形式,w或a
format:指定输入的格局和内容,format能够输入良多有效信息,如上例所示:
%(levelno)s:打印日记级其余数值
%(levelname)s:打印日记级别号称
%(pathname)s:打印以后实行步伐的路径,实在就是sys.argv[0]
%(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[line:%(lineno)d]%(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.py[line:11]DEBUGThisisdebugmessage
Sun,24May200921:48:54demo2.py[line:12]INFOThisisinfomessage
Sun,24May200921:48:54demo2.py[line:13]WARNINGThisiswarningmessage
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
###############################################
[loggers]
keys=root,example01,example02
[logger_root]
level=DEBUG
handlers=hand01,hand02
[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0
[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0
###############################################
[handlers]
keys=hand01,hand02,hand03
[handler_hand01]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)
[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form01
args=(myapp.log,a)
[handler_hand03]
class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=(myapp.log,a,10*1024*1024,5)
###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s
datefmt=%a,%d%b%Y%H:%M:%S
[formatter_form02]
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。 |
|