allow overriding logging.basicConfig
This commit is contained in:
parent
ef9d8710f5
commit
32ea45d403
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
|
import logging
|
||||||
|
|
||||||
logging.basicConfig(
|
|
||||||
level=logging.INFO, format="%(asctime)s: %(levelname)s: %(message)s")
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
|
@ -6,10 +6,11 @@ from multiprocessing import Process, Event
|
||||||
from signal import signal, SIGTERM, SIGINT
|
from signal import signal, SIGTERM, SIGINT
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from traceback import format_exc
|
from traceback import format_exc
|
||||||
|
import logging
|
||||||
|
|
||||||
from .config import Config
|
from .config import Config
|
||||||
from .exceptions import Handler
|
from .exceptions import Handler
|
||||||
from .log import log, logging
|
from .log import log
|
||||||
from .response import HTTPResponse
|
from .response import HTTPResponse
|
||||||
from .router import Router
|
from .router import Router
|
||||||
from .server import serve
|
from .server import serve
|
||||||
|
@ -18,7 +19,13 @@ from .exceptions import ServerError
|
||||||
|
|
||||||
|
|
||||||
class Sanic:
|
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:
|
if name is None:
|
||||||
frame_records = stack()[1]
|
frame_records = stack()[1]
|
||||||
name = getmodulename(frame_records[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()
|
Loading…
Reference in New Issue
Block a user