2013-03-16 69 views
4

以下是我的服务器代码。我需要将日志记录添加到它。这是一个非常基本的休息api服务器。我已经在Amazon EC2上部署了它。有时候由于错误或其他原因http服务器关闭。如果我登录到EC2,我可以在发生错误时看到它们。但是,如果我没有实时监控它,我不知道发生了什么错误。因此,我想添加日志记录,以便将日志文件记录到日志文件中,以供日后查看。请建议我如何做到这一点。如何登录到python和瓶子web服务器的文件?

import json 
import uuid # this is for generating unique id 
import datetime 
import bottle 
from bottle import route, run, request, abort 
from pymongo import Connection 

connection = Connection('localhost', 27017) 
db = connection.mydatabase 

@route('/documents', method='PUT') 
def put_document(): 
    data = request.body.readline() 
    if not data: 
     abort(400, 'No data received') 
    entity = json.loads(data) 
    if not entity.has_key('_id'): 
     abort(400, 'No _id specified') 
    try: 
     db['documents'].save(entity) 
    except ValidationError as ve: 
     abort(400, str(ve)) 

@route('/documents/:id', method='GET') 
def get_document(id): 
    entity = db['documents'].find_one({'_id':id}) 
    if not entity: 
     abort(404, 'No document with id %s' % id) 
    return entity 

@route('/startSession', method = 'GET') 
def startSession(): 
    #here we need to create a unique id and store it in the database. 
    date = str(datetime.datetime.utcnow()); 
    id = str(uuid.uuid4()) 
    reply = {'date' : date, 
       'user_id': id 
       } 

    response = {'date' : date, 
     'user_id': id 
     } 
    return_id = db['users'].save(reply) 
#print 'the id returned is', return_id 
#print 'the changed reply is',reply 
#print 'the NON changed respponse is ',response 
    return json.dumps(response) 

@route('/set_bus_location', method = 'PUT') 
def set_bus_location(): 
    data = request.body.readline() 
    print 'data is ',data 
    if not data: 
     abort(400, 'No data received') 
    entity = json.loads(data) 
    db['bus_locations'].save(entity) 

run(host='0.0.0.0', port=8080) 

回答

3

使用python Logging库。要记录异常,您需要使用tryexcept块。

import logging 
logging.basicConfig(filename='log.txt', format=logging.BASIC_FORMAT) 
logging.error('OH NO!') 
try: 
    raise Exception('Foo') 
except: 
    logging.exception("Oops:") 

内容的log.txt

ERROR:root:OH NO! 

您可以添加许多不同的采伐是去不同的地方,有不同的名称,或使用不同的格式。但是,Python日志记录库就是你想要的。

+0

我需要的是我通常在手动监视服务器时看到的错误的堆栈跟踪。以便我知道错误发生的位置。 所以对于那个应该我尝试赶上每个块我认为会有错误,然后使用logging.error认为你提到? – 2013-03-16 04:48:20

+0

是的。我已更新我的示例。 – 2013-03-16 05:05:36