python日志word范文模板 14页Word格式.docx
《python日志word范文模板 14页Word格式.docx》由会员分享,可在线阅读,更多相关《python日志word范文模板 14页Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
python日志logging模块学习
文档的URL:
/dkblog/archive/201X/08/26/2155018.html
python的日志logging模块学习
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函数对日志的输出格式及方式做相关配置
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'
./myapp.log文件中内容为:
Sun,24May201X21:
48:
54demo2.py[line:
11]DEBUGThisisdebugmessage
12]INFOThisisinfomessage
13]WARNINGThisiswarningmessage
logging.basicConfig函数各参数:
filename:
指定日志文件名
filemode:
和file函数意义相同,指定日志文件的打开模式,'
或'
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.将日志同时输出到文件和屏幕
##################################################################################################定义一个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)
#################################################################################################
root:
INFOThisisinfomessage
WARNINGThisiswarningmessage
4.logging之日志回滚
fromlogging.handlersimportRotatingFileHandler
##################################################################################################定义一个RotatingFileHandler,最多备份5个日志文件,每个日志文件最大10M
Rthandler=RotatingFileHandler('
maxBytes=10*1024*1024,backupCount=5)
Rthandler.setLevel(logging.INFO)
Rthandler.setFormatter(formatter)
).addHandler(Rthandler)
################################################################################################从上例和本例可以看出,logging有一个日志处理的主对象,其它处理方式都是通过addHandler添加进去的。
logging的几种handle方式如下:
logging.StreamHandler:
日志输出到流,可以是sys.stderr、sys.stdout或者文件
logging.FileHandler:
日志输出到文件
日志回滚方式,实际(来自:
/yatere/article/details/6655445
篇三:
Python语言的学习日志
当前时间的获取:
(1)输入print(datetime.datetime.fromtimestamp(time.time()).strftime('
%Y-%m-%d%H:
))运行之后显示
输入importtime
printtime.time()
显示
一连串的数字不是我们想要的结果,根据查询我们可以利用time模块的格式化时间的方法来处理:
time.localtime(time.time())用time.localtime()方法,作用是格式化时间戳为本地的时间。
输出的结果是:
time.struct_time(tm_year=201X,tm_mon=6,tm_mday=25,tm_hour=22,tm_min=33,tm_sec=39,tm_wday=0,tm_yday=200,tm_isdst=0)
采用
time.strftime('
%Y-%m-%d'
time.localtime(time.time()))
得到结果:
time.strftime里面有很多参数,可以让你能够更随意的输出自己想要的东西:
下面是time.strftime的参数:
strftime(format[,tuple])->
string将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y两位数的年份表示(00-99)
%Y四位数的年份表示(000-9999)
%m月份(01-12)%d月内中的一天(0-31)
%H24小时制小时数(0-23)
%I12小时制小时数(01-12)
%M分钟数(00=59)
%S秒(00-59)
%a本地简化星期名称
%A本地完整星期名称
%b本地简化的月份名称
%B本地完整的月份名称
%c本地相应的日期表示和时间表示
%j年内的一天(001-366)
%p本地A.M.或P.M.的等价符
%U一年中的星期数(00-53)星期天为星期的开始%w星期(0-6),星期天为星期的开始
%W一年中的星期数(00-53)星期一为星期的开始%x本地相应的日期表示
%X本地相应的时间表示
%Z当前时区的名称
%%%号本身
篇四:
python日记
基础
python两种字符串格式strunicode
不回车,连续打印,在后面加逗号
三引号表示:
可以换行的字符串,多行
\n回车
\t制表符
#-*-coding:
utf-8-*-#
range
列子:
range(1,5)#代表从1到5(不包含5)
range()和xrange()区别
range()会生成实例对象,占用内存;
xrange()不会,节省内存
与或非
and
and:
只要有一个false就是false
or
只要有一个条件是True,表达式就是True
list
append添加元素
pop删除最后一个元素
dellis[2]删除的是位置
list.remove
(1)删除的是值
len获取list内元素个数
printa[0]#输出第一个字符
printa[1:
4]#输出第二个字符和第4个字符中间的
printa[:
:
-1]#倒序输出list内参数
格式化输出
print"
%s%s"
%("
a"
"
b"
%d%d"
%(1,2)
问问%s"
%("
为"
testing%f"
%(0.011,)
list的使用
a=[参数]
list.append(a)追加成员x,到列表最后一个位置
list.pop(a)删除成员,删除第i个成员,并返回删除的值
list.count(a)计算列表中参数是x的个数
list.remove(a)删除列表中的成员,直接删除成员x
list.reverse()将列表中的顺序颠倒,即从后向前排序
list.index(a)获得参数x在列表中的位置
list.sort()将列表中的成员排序
sorted(a)生成新的list并排序,对原有list不做修改。
list.insert(index,x)向列表中第index位置插入数据x
例子:
1、
>
a=[1,2,3]
printa
结果:
[1,2,3]
2、
a.append(4)
[1,2,3,4]
3、
a.pop(0)
结果1
[2,3,4]
4、
a.count
(2)
5、
a.remove
(2)
[3,4]
6、
a=[2,1,3,6,5,7]
a.reverse()
[7,5,6,3,1,2]
7、
a=[3,5,7,6]
a.index(3)
8、
a=[3,6,2,5,0,6,9]
a.sort()
[0,2,3,5,6,6,9]
9、
a=[7,5,9,3,0,1,2]
sorted(a)
[0,1,2,3,5,7,9]
[7,5,9,3,0,1,2]
10、
a=[3,5,6]
a.insert(0,10)
[10,3,5,6]
typetype()的使用方法:
type(对象)
type
(2)结果为:
<
type'
int'
type(“ss”)结果为<
str'
结果为:
ab
12
问问为
testing0.011000
dictionary
字典
dictionary={"
1231"
"
22"
}
printdictionary
增加
dictionary["
4566"
]="
ces"
修改
linux"
交集
a={1,2,3,4}
b={4,5,6}
printa&
b
并集
printa|b
作业:
1你所有发现的最常见的bug,web手机的
1、开发粗心,某个边界限制应为≥写成了>
2、数据流水,因某个表数据逻辑特殊,没有做特殊处理。
3、新的系统,忽略了不同浏览器的兼容性。
4、部署环境时忽略了log。
5、增加某个数据项后,该数据某字段内容过长,查询显示回事数据列表变形。
6、把空格当成一个字符处理,导致查询失败。
7、登录时效,没做特殊处理。
8、添加要求必填项,修改也应该是必填项。
9、打包时,缺少某个文件。
10、输入错误数据时,提示信息有误。
2整理你自己的测试用例设计方法
等价类,边界值,流程分析法,经验分析法
3你觉得最有技术含量的bug,说3个
1、数据流水,因某个表数据逻辑特殊,没有做特殊处理。
2、把空格当成一个字符处理,导致查询失败。
3、添加要求必填项,修改也应该是必填项。
type
a=(123)
b=("
printtype(a)
printtype(b)
)print"
%(1,2)print"
sort排序,元祖不能改变