Skip to content

Commit

Permalink
Merge branch 'main' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
ahopkins committed Jun 16, 2022
2 parents a675d05 + ce926a3 commit 66fff9b
Show file tree
Hide file tree
Showing 14 changed files with 425 additions and 126 deletions.
7 changes: 4 additions & 3 deletions sanic/app.py
Expand Up @@ -97,7 +97,7 @@
from sanic_ext import Extend # type: ignore
from sanic_ext.extensions.base import Extension # type: ignore
except ImportError:
Extend = TypeVar("Extend") # type: ignore
Extend = TypeVar("Extend", Type) # type: ignore


if OS_IS_WINDOWS: # no cov
Expand Down Expand Up @@ -1573,8 +1573,9 @@ async def _server_event(
"shutdown",
):
raise SanicException(f"Invalid server event: {event}")
if self.state.verbosity >= 1:
logger.debug(f"Triggering server events: {event}")
logger.debug(
f"Triggering server events: {event}", extra={"verbosity": 1}
)
reverse = concern == "shutdown"
if loop is None:
loop = self.loop
Expand Down
5 changes: 4 additions & 1 deletion sanic/application/state.py
Expand Up @@ -9,7 +9,7 @@
from ssl import SSLContext
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Union

from sanic.log import logger
from sanic.log import VerbosityFilter, logger
from sanic.server.async_server import AsyncioServer


Expand Down Expand Up @@ -91,6 +91,9 @@ def set_mode(self, value: Union[str, Mode]):
if getattr(self.app, "configure_logging", False) and self.app.debug:
logger.setLevel(logging.DEBUG)

def set_verbosity(self, value: int):
VerbosityFilter.verbosity = value

@property
def is_debug(self):
return self.mode is Mode.DEBUG
Expand Down
50 changes: 29 additions & 21 deletions sanic/asgi.py
Expand Up @@ -25,27 +25,28 @@ class Lifespan:
def __init__(self, asgi_app: ASGIApp) -> None:
self.asgi_app = asgi_app

if self.asgi_app.sanic_app.state.verbosity > 0:
if (
"server.init.before"
in self.asgi_app.sanic_app.signal_router.name_index
):
logger.debug(
'You have set a listener for "before_server_start" '
"in ASGI mode. "
"It will be executed as early as possible, but not before "
"the ASGI server is started."
)
if (
"server.shutdown.after"
in self.asgi_app.sanic_app.signal_router.name_index
):
logger.debug(
'You have set a listener for "after_server_stop" '
"in ASGI mode. "
"It will be executed as late as possible, but not after "
"the ASGI server is stopped."
)
if (
"server.init.before"
in self.asgi_app.sanic_app.signal_router.name_index
):
logger.debug(
'You have set a listener for "before_server_start" '
"in ASGI mode. "
"It will be executed as early as possible, but not before "
"the ASGI server is started.",
extra={"verbosity": 1},
)
if (
"server.shutdown.after"
in self.asgi_app.sanic_app.signal_router.name_index
):
logger.debug(
'You have set a listener for "after_server_stop" '
"in ASGI mode. "
"It will be executed as late as possible, but not after "
"the ASGI server is stopped.",
extra={"verbosity": 1},
)

async def startup(self) -> None:
"""
Expand Down Expand Up @@ -163,6 +164,13 @@ async def create(
instance.request_body = True
instance.request.conn_info = ConnInfo(instance.transport)

await sanic_app.dispatch(
"http.lifecycle.request",
inline=True,
context={"request": instance.request},
fail_not_found=False,
)

return instance

async def read(self) -> Optional[bytes]:
Expand Down
1 change: 1 addition & 0 deletions sanic/http.py
Expand Up @@ -265,6 +265,7 @@ async def http1_request_header(self): # no cov
transport=self.protocol.transport,
app=self.protocol.app,
)
self.protocol.request_class._current.set(request)
await self.dispatch(
"http.lifecycle.request",
inline=True,
Expand Down
17 changes: 16 additions & 1 deletion sanic/log.py
Expand Up @@ -63,21 +63,36 @@ class Colors(str, Enum): # no cov
END = "\033[0m"
BLUE = "\033[01;34m"
GREEN = "\033[01;32m"
YELLOW = "\033[01;33m"
PURPLE = "\033[01;35m"
RED = "\033[01;31m"
SANIC = "\033[38;2;255;13;104m"
YELLOW = "\033[01;33m"


class VerbosityFilter(logging.Filter):
verbosity: int = 0

def filter(self, record: logging.LogRecord) -> bool:
verbosity = getattr(record, "verbosity", 0)
return verbosity <= self.verbosity


_verbosity_filter = VerbosityFilter()

logger = logging.getLogger("sanic.root") # no cov
logger.addFilter(_verbosity_filter)
"""
General Sanic logger
"""

error_logger = logging.getLogger("sanic.error") # no cov
error_logger.addFilter(_verbosity_filter)
"""
Logger used by Sanic for error logging
"""

access_logger = logging.getLogger("sanic.access") # no cov
access_logger.addFilter(_verbosity_filter)
"""
Logger used by Sanic for access logging
"""
Expand Down

0 comments on commit 66fff9b

Please sign in to comment.