仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 369|回复: 8
打印 上一主题 下一主题

[CentOS(社区)] 带来一篇python 的日记logging模块进修

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-17 09:10:36 | 只看该作者
编程学习及开发,Linux是免费,开源的操作系统,并且可开发工具相当多,如果您支持自由软件,一定要同广大热爱自由软件人士一同为其不懈努力。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-24 16:50:37 | 只看该作者
对我们学习操作系统有很大的帮助,加深我们对OS的理解。?
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-2 12:41:00 | 只看该作者
Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。
乐观 该用户已被删除
5#
发表于 2015-2-7 21:47:19 | 只看该作者
为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?
精灵巫婆 该用户已被删除
6#
发表于 2015-2-23 20:54:21 | 只看该作者
说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?
若相依 该用户已被删除
7#
发表于 2015-3-7 11:16:53 | 只看该作者
Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。
蒙在股里 该用户已被删除
8#
发表于 2015-3-15 07:08:50 | 只看该作者
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
爱飞 该用户已被删除
9#
发表于 2015-3-21 23:24:14 | 只看该作者
对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表