changeset 90:0b8c3a21335c

Added support for logging.
author Atul Varma <varmaa@toolness.com>
date Fri, 01 May 2009 17:38:44 -0700
parents 8105e7a95e8a
children ef9ae587a0c8
files cosocket.py openwebchat.py
diffstat 2 files changed, 28 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/cosocket.py	Fri May 01 17:13:56 2009 -0700
+++ b/cosocket.py	Fri May 01 17:38:44 2009 -0700
@@ -6,6 +6,7 @@
 import traceback
 import time
 import weakref
+import logging
 
 DEFAULT_TIMEOUT = 90.0
 DEFAULT_MAX_DATA = 65536
@@ -106,8 +107,11 @@
         self.close()
 
     def log_info(self, message, type='info'):
-        # TODO: Use the logging module here.
-        print '%s: %s' % (type, message)
+        try:
+            level = getattr(logging, type.upper())
+        except AttributeError:
+            level = logging.INFO
+        logging.log(level, message)
 
     def handle_error(self):
         self.log_info(traceback.format_exc() +
@@ -127,6 +131,8 @@
     def __on_tick(self, time_elapsed):
         self.__time_passed += time_elapsed
         if self.__time_passed > self.__timeout:
+            self.log_info("Timeout expired (%ss)." % self.__timeout,
+                          'error')
             self.handle_close()
 
     def clear_timeout(self):
@@ -144,6 +150,8 @@
         self.__data.append(data)
         self.__data_len += len(data)
         if self.__max_data and self.__data_len > self.__max_data:
+            self.log_info("Max data reached (%s bytes)." % self.__max_data,
+                          'error')
             self.handle_close()
 
     def set_max_data(self, amount):
--- a/openwebchat.py	Fri May 01 17:13:56 2009 -0700
+++ b/openwebchat.py	Fri May 01 17:38:44 2009 -0700
@@ -7,6 +7,7 @@
 import mimetools
 import weakref
 import cgi
+import logging
 
 from cosocket import *
 import channels
@@ -81,7 +82,7 @@
                                              self._server_coroutine)
 
     def run(self):
-        self._server.run(timeout = 5.0)
+        self._server.run()
 
     def _until_http_response_sent(self, msg = '', mimetype = 'text/plain',
                                   length = None, code = 200,
@@ -134,6 +135,7 @@
             else:
                 yield self._until_one_request_processed(addr)
         finally:
+            logging.info('Closing connection to %s' % repr(addr))
             self._num_connections -= 1
 
     def __multipart_boundary(self, boundary, mimetype = 'application/json'):
@@ -182,6 +184,8 @@
             i = self._parse_id(querydict.get('start'))
             conv = self._convs.get(conv_name)
             while i >= len(conv):
+                logging.info("Waiting for message on channel '%s' for %s" %
+                             (conv_name, addr))
                 yield channels.until_message_received(conv_name)
             yield self._until_http_response_sent(
                 json.dumps({'messages': conv[i:]}),
@@ -218,6 +222,7 @@
         request = yield until_received(terminator = '\r\n\r\n')
         request = request.splitlines()
         request_line = request[0]
+        logging.info("Request from %s: %s" % (addr, request_line))
         stringfile = cStringIO.StringIO('\n'.join(request[1:]))
         headers = mimetools.Message(stringfile)
         req_parts = request_line.split()
@@ -299,10 +304,20 @@
 if __name__ == '__main__':
     args = get_args(ip = '127.0.0.1',
                     port = 8071,
-                    is_keep_alive = True)
+                    is_keep_alive = True,
+                    logfile = '',
+                    loglevel = 'info')
+
+    args.loglevel = getattr(logging, args.loglevel.upper())
+    if args.logfile:
+        logging.basicConfig(filename = args.logfile,
+                            level = args.loglevel)
+    else:
+        logging.basicConfig(stream = sys.stdout,
+                            level = args.loglevel)
 
     server = OpenWebChatServer(addr = (args.ip, args.port),
                                conversations = Conversations(),
                                is_keep_alive = args.is_keep_alive)
-    print "Starting server with configuration: %s" % args
+    logging.info("Starting server with configuration: %s" % args)
     server.run()