您的位置:首页 > 运维架构 > Linux

CentOS+postfix+ExtMail+amavisd-new+Spam_Locker+DSpam配置指南:七、配置Webmail-ExtMail

2012-09-11 13:02 706 查看
一、定义日志打印方式
如果我们运行自己的程序,有时候需要记录程序运行过程中出现的问题或者信息。可以运用日志模块logging来记录,该模块日志格式可以根据用户需求来自己定义。
常见打印日志信息形式如下:
import logging
logging.debug("========定义要打印的内容====debug①===========")
logging.info("=========定义要打印的内容====info②===========")
logging.warning("======定义要打印的内容====warning③===========")
默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别优先关系为:CRITICAL>ERROR>WARNING>INFO>DEBUG>NOTSET,
对于日志等级:
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0
当然也可以根据自己的需求定义优先级别,从以上日志优先级别屏幕上打印的内容为:
WARNING:root;======定义要打印的内容====warning③===========
二、通过logging.basicConfig函数对日志的输出格式进行配置
#!/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')
[root@Python log]# python log.py
[root@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函数各参数:
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):
[root@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)
[root@Python log]#


应用程序内容如下:
[root@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
[root@Python log]# python shopping.py
请输入要买的水果:banana
请输入要买入水果的重量:3
您买的 banana 需要支付 7 元
[root@Python log]# python shopping.py
请输入要买的水果:pear
请输入要买入水果的重量:10
您买的 pear 需要支付 33 元
[root@Python log]# python shopping.py
请输入要买的水果:apple
请输入要买入水果的重量:8
您买的 apple 需要支付 36 元
查看生成日志记录信息:
[root@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
[root@Python log]#
思路:在生产中可以把日志记录模块写到一个文件中,然后在生产的程序中直接导入即可,最后根据需求定义要写入的记录内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐