How to enter file for python & bottle web server?

Below is my code for the server. I need to add an entry to it. This is a very simple api rest server. I deployed it to Amazon EC2. Sometimes, due to errors or for some other reason, the http server shuts down. If I logged in to EC2, I can see the eras while they occur. But if I do not control it in real time, I do not know what happened. So I want to add a log that will write erros to a log file, which I can see later. Please suggest how I do this.

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) 
+4
source share
1 answer

Use the python protocol library. To log exceptions, you need to use try and except blocks.

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

The contents of log.txt :

 ERROR:root:OH NO! 

You can add many different registrars that go to different places, have different names or use different formats. However, the Python protocol library is what you want.

+3
source

All Articles