diff options
Diffstat (limited to 'project1/proj1_s4498062/webserver.py')
-rw-r--r-- | project1/proj1_s4498062/webserver.py | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/project1/proj1_s4498062/webserver.py b/project1/proj1_s4498062/webserver.py index e518810..a361d5b 100644 --- a/project1/proj1_s4498062/webserver.py +++ b/project1/proj1_s4498062/webserver.py @@ -1,18 +1,43 @@ import argparse
+import logging
+import os.path
+import sys
+
import webhttp.server
+import webhttp.weblogging
# Create and start the HTTP Server
# Use `python webserver.py --help` to display command line options
if __name__ == '__main__':
# Parse command line arguments
parser = argparse.ArgumentParser(description="HTTP Server")
- parser.add_argument("-a", "--address", type=str, default="localhost")
- parser.add_argument("-p", "--port", type=int, default=8001)
- parser.add_argument("-t", "--timeout", type=int, default=15)
+ parser.add_argument('-c', '--config', type=str, default='~/.webpy.ini',
+ help='configuration file')
+ parser.add_argument('-a', '--address', type=str, default='localhost',
+ help='address to listen on (default localhost)')
+ parser.add_argument('-p', '--port', type=int, default=80,
+ help='port to listen on (default 80)')
+ parser.add_argument('-t', '--timeout', type=int, default=15,
+ help='timeout for incoming connections (default 15)')
+ parser.add_argument('-l', '--log', type=str, default='info',
+ help='log level (debug, info, warning, error, critical)')
+ parser.add_argument('-lf', '--log-file', type=str, default=None,
+ help='log file (default stdout)')
args = parser.parse_args()
+ # Logging
+ fmt = '[%(asctime)s] %(process)d %(levelname)s %(message)s'
+ logging.basicConfig(format=fmt, level=getattr(logging, args.log.upper()))
+ if args.log_file != None:
+ logger = logging.getLogger(webhttp.weblogging.name)
+ handler = logging.FileHandler(args.log_file)
+ handler.setLevel(getattr(logging, args.log.upper()))
+ logger.addHandler(handler)
+
# Start server
- server = webhttp.server.Server(args.address, args.port, args.timeout)
+ config = os.path.expanduser(os.path.expandvars(args.config))
+ server = webhttp.server.Server(config=config,
+ address=args.address, port=args.port, timeout=args.timeout)
try:
server.run()
except KeyboardInterrupt:
|