设为首页 收藏本站
查看: 651|回复: 0

[经验分享] Python之配置日志模块logging

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-1-28 08:46:36 | 显示全部楼层 |阅读模式
                      一、定义日志打印方式
如果我们运行自己的程序,有时候需要记录程序运行过程中出现的问题或者信息。可以运用日志模块logging来记录,该模块日志格式可以根据用户需求来自己定义。
常见打印日志信息形式如下:
1
2
3
4
import logging
logging.debug("========定义要打印的内容====debug①===========")
logging.info("=========定义要打印的内容====info②===========")
logging.warning("======定义要打印的内容====warning③===========")



默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别优先关系为:CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTSET,
对于日志等级:
1
2
3
4
5
6
7
8
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0



当然也可以根据自己的需求定义优先级别,从以上日志优先级别屏幕上打印的内容为:
WARNING:root;======定义要打印的内容====warning③===========
二、通过logging.basicConfig函数对日志的输出格式进行配置
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
# -*- coding:utf8 -*-
import logging
def logs(arg):
         logging.basicConfig(level=logging.DEBUG,
                            format='%(asctime)s %(message)s',
                            datefmt='%Y-%m-%d %H:%M:%S',
                            filename='myapp.log',
                            filemode='w')
         logging.debug(arg)
         logging.info(arg)
         logging.warning(arg)
logs('python is language')



1
2
3
4
5
[iyunv@Python log]# python log.py
[iyunv@Python log]# cat myapp.log
2016-01-27 10:44:57 python is language
2016-01-27 10:44:57 python is language
2016-01-27 10:44:57 python is language



logging.basicConfig函数各参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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被忽略



三、运行logging模块记录程序操作
有如下日志定义文件(log.py):
1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@Python log]# cat log.py
#!/usr/bin/env python
# -*- coding:utf8 -*-
import logging
def logs(arg):
         logging.basicConfig(level=logging.DEBUG,
                            format='%(asctime)s %(message)s',
                            datefmt='%Y-%m-%d %H:%M:%S',
                            filename='shopping.log',
                            filemode='a')
         logging.info(arg)
[iyunv@Python log]#





应用程序内容如下:
1
2
3
4
5
6
7
8
9
10
11
[iyunv@Python log]# cat shopping.py
#!/usr/bin/env python
# -*- coding:utf8 -*-
from log import logs
user_dict={'apple':4.5,'pear':3.3,'banana':2.5,'tomato':1.5}
ch_fruit = raw_input("请输入要买的水果:")
num=int(raw_input("请输入要买入水果的重量:"))
total_prices= user_dict[ch_fruit]*num
print "您买的 %s 需要支付 %d 元" % (ch_fruit,total_prices)
record="购买%d千克%s"%(num,ch_fruit)#定义购买记录信息
logs(record)#调用log.py中定义的函数logs



运行shopping.py
1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@Python log]# python shopping.py
请输入要买的水果:banana
请输入要买入水果的重量:3
您买的 banana 需要支付 7 元
[iyunv@Python log]# python shopping.py
请输入要买的水果:pear
请输入要买入水果的重量:10
您买的 pear 需要支付 33 元
[iyunv@Python log]# python shopping.py
请输入要买的水果:apple
请输入要买入水果的重量:8
您买的 apple 需要支付 36 元



查看生成日志记录信息:
1
2
3
4
5
[iyunv@Python log]# cat shopping.log
2016-01-27 11:10:47 购买3千克banana
2016-01-27 11:10:53 购买10千克pear
2016-01-27 11:11:02 购买8千克apple
[iyunv@Python log]#



思路:在生产中可以把日志记录模块写到一个文件中,然后在生产的程序中直接导入即可,最后根据需求定义要写入的记录内容
                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-170441-1-1.html 上篇帖子: python 批量登录服务器 下篇帖子: Python 常见异常列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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