#!/usr/bin/python3 ''' This demonstrates http://bugs.python.org/issue26789 ''' import os import asyncio import logging import logging.handlers from aiohttp import web LOGFILE = os.path.join(os.path.dirname(__file__), '..', 'logs', 'sample.log') LOGGER = logging.getLogger(__name__) def init_logs(use_console=True, log_file=None): '''Initalize the logs of the program''' root_logger = logging.getLogger() root_logger.setLevel(logging.DEBUG) formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s') # create console handler and set level to debug if use_console: console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) console_handler.setFormatter(formatter) root_logger.addHandler(console_handler) if log_file: log_dir = os.path.dirname(log_file) if not os.path.isdir(log_dir): os.makedirs(log_dir) file_handler = logging.handlers.TimedRotatingFileHandler(log_file, when='M', interval=1, backupCount=10) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) root_logger.addHandler(file_handler) def hello(): '''Web request''' return web.Response(text="Hello, world") def main(): '''The main function''' init_logs(log_file=LOGFILE) loop = asyncio.get_event_loop() loop.set_debug(enabled=True) app = web.Application(loop=loop) app.router.add_get('/', hello) handler = app.make_handler() loop.run_until_complete(loop.create_server(handler=handler, host='0.0.0.0', port=8888)) loop.run_forever() loop.close() if __name__ == "__main__": main()