Merge pull request #212 from r0fls/176
allow overriding logging basicConfig settings
This commit is contained in:
		
							
								
								
									
										23
									
								
								examples/override_logging.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								examples/override_logging.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| from sanic import Sanic | ||||
| from sanic.response import text | ||||
| import json | ||||
| import logging | ||||
|  | ||||
| logging_format = "[%(asctime)s] %(process)d-%(levelname)s " | ||||
| logging_format += "%(module)s::%(funcName)s():l%(lineno)d: " | ||||
| logging_format += "%(message)s" | ||||
|  | ||||
| logging.basicConfig( | ||||
|     format=logging_format, | ||||
|     level=logging.DEBUG | ||||
| ) | ||||
| log = logging.getLogger() | ||||
|  | ||||
| # Set logger to override default basicConfig | ||||
| sanic = Sanic(logger=True) | ||||
| @sanic.route("/") | ||||
| def test(request): | ||||
|     log.info("received request; responding with 'hey'") | ||||
|     return text("hey") | ||||
|  | ||||
| sanic.run(host="0.0.0.0", port=8000) | ||||
| @@ -1,5 +1,3 @@ | ||||
| import logging | ||||
|  | ||||
| logging.basicConfig( | ||||
|     level=logging.INFO, format="%(asctime)s: %(levelname)s: %(message)s") | ||||
| log = logging.getLogger(__name__) | ||||
|   | ||||
| @@ -6,10 +6,11 @@ from multiprocessing import Process, Event | ||||
| from signal import signal, SIGTERM, SIGINT | ||||
| from time import sleep | ||||
| from traceback import format_exc | ||||
| import logging | ||||
|  | ||||
| from .config import Config | ||||
| from .exceptions import Handler | ||||
| from .log import log, logging | ||||
| from .log import log | ||||
| from .response import HTTPResponse | ||||
| from .router import Router | ||||
| from .server import serve | ||||
| @@ -18,7 +19,13 @@ from .exceptions import ServerError | ||||
|  | ||||
|  | ||||
| class Sanic: | ||||
|     def __init__(self, name=None, router=None, error_handler=None): | ||||
|     def __init__(self, name=None, router=None, | ||||
|                  error_handler=None, logger=None): | ||||
|         if logger is None: | ||||
|             logging.basicConfig( | ||||
|                 level=logging.INFO, | ||||
|                 format="%(asctime)s: %(levelname)s: %(message)s" | ||||
|             ) | ||||
|         if name is None: | ||||
|             frame_records = stack()[1] | ||||
|             name = getmodulename(frame_records[1]) | ||||
|   | ||||
							
								
								
									
										33
									
								
								tests/test_logging.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								tests/test_logging.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| import asyncio | ||||
| from sanic.response import text | ||||
| from sanic import Sanic | ||||
| from io import StringIO | ||||
| from sanic.utils import sanic_endpoint_test | ||||
| import logging | ||||
|  | ||||
| logging_format = '''module: %(module)s; \ | ||||
| function: %(funcName)s(); \ | ||||
| message: %(message)s''' | ||||
|  | ||||
| def test_log(): | ||||
|     log_stream = StringIO() | ||||
|     for handler in logging.root.handlers[:]: | ||||
|             logging.root.removeHandler(handler) | ||||
|     logging.basicConfig( | ||||
|         format=logging_format, | ||||
|         level=logging.DEBUG, | ||||
|         stream=log_stream | ||||
|     ) | ||||
|     log = logging.getLogger() | ||||
|     app = Sanic('test_logging', logger=True) | ||||
|     @app.route('/') | ||||
|     def handler(request): | ||||
|         log.info('hello world') | ||||
|         return text('hello') | ||||
|  | ||||
|     request, response = sanic_endpoint_test(app) | ||||
|     log_text = log_stream.getvalue().strip().split('\n')[-3] | ||||
|     assert log_text == "module: test_logging; function: handler(); message: hello world" | ||||
|  | ||||
| if __name__ =="__main__": | ||||
|     test_log() | ||||
		Reference in New Issue
	
	Block a user
	 Eli Uriegas
					Eli Uriegas