Last active
October 19, 2017 06:49
-
-
Save qxj/8a53ab70bffdaeeb801f to your computer and use it in GitHub Desktop.
A simple web server with rotating file logger
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
"""A simple web server with rotating file logger | |
""" | |
import logging | |
import logging.handlers | |
import BaseHTTPServer | |
def main(): | |
logfile = 'websvr.log' | |
port = 8080 | |
# rotating logger | |
logger = logging.getLogger('websvr') | |
logger.setLevel(logging.INFO) | |
formatter = logging.Formatter('%(message)s') | |
handler = logging.handlers.RotatingFileHandler(logfile, | |
maxBytes=5*1024*1024, | |
backupCount=5) | |
handler.setFormatter(formatter) | |
logger.addHandler(handler) | |
# start web service | |
class MyHttpHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |
# override | |
def log_message(self, format, *args): | |
logger.info("%s - - [%s] %s", self.client_address[0], | |
self.log_date_time_string(), | |
format % args) | |
def do_GET(self): | |
try: | |
self.send_response(200) | |
self.send_header('Content-type', 'text-html') | |
self.end_headers() | |
# send file content to client | |
self.wfile.write('Hello world') | |
self.wfile.write('Request path: %s' % self.path) | |
except IOError: | |
self.send_error(404, 'file not found') | |
try: | |
httpd = BaseHTTPServer.HTTPServer(('', port), MyHttpHandler) | |
sa = httpd.socket.getsockname() | |
logger.info("Serving HTTP on %s port %d ...", sa[0], sa[1]) | |
httpd.serve_forever() | |
except KeyboardInterrupt: | |
httpd.socket.close() | |
logger.info("Web server is closed") | |
if __name__ == "__main__": | |
main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
"""A simple web server with rotating file logger | |
""" | |
import logging | |
import logging.handlers | |
import SimpleHTTPServer | |
import SocketServer | |
def main(): | |
logfile = 'websvr.log' | |
port = 8080 | |
## rotating logger | |
logger = logging.getLogger('websvr') | |
logger.setLevel(logging.INFO) | |
formatter = logging.Formatter('%(message)s') | |
handler = logging.handlers.RotatingFileHandler(logfile, | |
maxBytes=5*1024*1024, | |
backupCount=5) | |
handler.setFormatter(formatter) | |
logger.addHandler(handler) | |
## start web service | |
class MyHttpHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): | |
# override | |
def log_message(self, format, *args): | |
logger.info("%s - - [%s] %s", self.client_address[0], | |
self.log_date_time_string(), | |
format % args) | |
try: | |
httpd = SocketServer.TCPServer(('', port), MyHttpHandler) | |
sa = httpd.socket.getsockname() | |
logger.info("Serving HTTP on %s port %d ...", sa[0], sa[1]) | |
httpd.serve_forever() | |
except KeyboardInterrupt: | |
httpd.socket.close() | |
logger.info("Web server is closed") | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment