青南的小世界

给时光以生命。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

title: 使用AWS亚马逊云搭建Gmail转发服务(三)
author:青南
date: 2015-01-02 15:42:22
categories: [Python]
tags: [log,Gmail,Python,Flask]

在上一篇文章使用AWS亚马逊云搭建Gmail转发服务(二)中,我们已经介绍了如何把邮件转发程序部署在服务器上。但是这样还不够。还需要实时监控程序的运行状态。于是,给程序增加日志记录功能是非常重要的。

日志

这里使用Python的logging库,实现日志记录功能。

import logging

logging.basicConfig(level=logging.DEBUG,
                format='%(asctime)s %(filename)s %(levelname)s %(message)s',
                datefmt='%Y %m %d %H:%M:%S', #日期格式:年月日时分秒
                filename='mail_note.log', #文件名
                filemode='a') #以最佳的方式添加日志
mail_log = logging.getLogger('maillog')

以上代码的作用是导入logging库功能。然后配置logging的输出格式。
各行代码的作用已经注释。

要使用日志的时候,通过以下代码:

logging.info('日志内容')

同类的还有:

mail_log.debug('内容')
mail_log.warning('内容')
mail_log.error('内容')
……

logging库的功能还有很多,这里只是简单的介绍一下,更多的功能可以查阅相关的资料。

Flask

现在日志已经生成。又如何通过Flask查看呢?由于我的前端不行。因此这里就不使用精细的模板了。Flask的部署就不叙述了,各位可以参考Flask官方文档http://dormousehole.readthedocs.org/en/latest/

这里我只演示一个非常简单的日志输出功能。编写gmail_flask.py,请看代码:
#--coding:utf-8--
from flask import Flask
app = Flask(name)

@app.route('/')
def index():
    f = open('mail_note.log','rb') #以读文件的方式打开mail_note.log文件
    content = f.readlines()#按行读取日志
    s = ''
    for each in content:
        s += each
        s += '</p>'#输出日志
    f.close()
    return s

if __name__ == '__main__':
    app.run(host='0.0.0.0') #开发外网访问

这个功能是把日志按行输出到网页上。
现在测试一下功能:
在终端窗口输入:

screen
python gmail_helper.py

然后Ctrl+A+D返回,再输入:

  screen
  python gmail_flask.py

然后访问服务器的5000端口查看效果。如图是我的服务器返回信息:

这里出现了Google的很多信息,这是由于Gmail的API库文件discovery.py里面也有用到日志功能。这个时候这里调用根logging,就会把discovery.py里面logging.info输出的信息写出来。这个时候怎么办呢?我对logging不是很熟悉,还请熟悉logging模块的朋友指点迷津。

我使用了一个变通的办法:

修改gmail_flask.py文件:

#-*-coding:utf-8-*-
from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    f = open('mail_note.log','rb') #以读文件的方式打开mail_note.log文件
    content = f.readlines()#按行读取日志
    s = ''
    for each in content:
		if 'gmail_helper.py' in each: #判定信息来自gmail_helper.py而不是discovery.py
	        s += each
	        s += '</p>'#输出日志
    f.close()
    return s

if __name__ == '__main__':
    app.run(host='0.0.0.0') #开发外网访问

效果如下图:

源代码已更新到Github,请戳->https://github.com/kingname/MCC/blob/master/ghelper_with_log

我的日志会通过博客进行开放,地址请戳:

http://flask.kingname.info:5000
(2015年1月8日已暂停flask.kingname.info:5000访问,因为发现有个人信息流出。)

posted on 2015-01-02 18:24  青南  阅读(1255)  评论(1编辑  收藏  举报