Fix logging and use coloredlogs for nicer output
This commit is contained in:
parent
96642d2255
commit
0d49945018
|
@ -1,6 +1,7 @@
|
||||||
HOST = "0.0.0.0"
|
HOST = "0.0.0.0"
|
||||||
PORT = 3000
|
PORT = 3000
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
VERBOSE = False
|
||||||
AUTO_RESTART = True
|
AUTO_RESTART = True
|
||||||
SECRET = "!!!!!!!!!!!!CHANGE ME!!!!!!!!!!!!"
|
SECRET = "!!!!!!!!!!!!CHANGE ME!!!!!!!!!!!!"
|
||||||
POSTGRES_URL = "postgresql+asyncpg://obs:obs@postgres/obs"
|
POSTGRES_URL = "postgresql+asyncpg://obs:obs@postgres/obs"
|
||||||
|
|
|
@ -4,6 +4,7 @@ PORT = 3000
|
||||||
|
|
||||||
# Extended log output, but slower
|
# Extended log output, but slower
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
VERBOSE = DEBUG
|
||||||
AUTO_RESTART = DEBUG
|
AUTO_RESTART = DEBUG
|
||||||
|
|
||||||
# Required to encrypt or sign sessions, cookies, tokens, etc.
|
# Required to encrypt or sign sessions, cookies, tokens, etc.
|
||||||
|
|
|
@ -24,7 +24,7 @@ from obs.api.db import User, make_session, connect_db
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
app = Sanic("OpenBikeSensor Portal API")
|
app = Sanic("OpenBikeSensor Portal API", log_config={})
|
||||||
app.update_config("./config.py")
|
app.update_config("./config.py")
|
||||||
c = app.config
|
c = app.config
|
||||||
|
|
||||||
|
@ -32,8 +32,8 @@ api = Blueprint("api", url_prefix="/api")
|
||||||
auth = Blueprint("auth", url_prefix="")
|
auth = Blueprint("auth", url_prefix="")
|
||||||
|
|
||||||
|
|
||||||
@api.exception(SanicException, BaseException)
|
@app.exception(SanicException, BaseException)
|
||||||
def _handle_sanic_errors(_request, exception):
|
async def _handle_sanic_errors(_request, exception):
|
||||||
log.error("Exception in handler: %s", exception, exc_info=True)
|
log.error("Exception in handler: %s", exception, exc_info=True)
|
||||||
return json_response(
|
return json_response(
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,6 +18,8 @@ log = logging.getLogger(__name__)
|
||||||
|
|
||||||
client = Client(client_authn_method=CLIENT_AUTHN_METHOD)
|
client = Client(client_authn_method=CLIENT_AUTHN_METHOD)
|
||||||
|
|
||||||
|
# Do not show verbose library output, even when the appliaction is in debug mode
|
||||||
|
logging.getLogger('oic').setLevel(logging.INFO)
|
||||||
|
|
||||||
@auth.before_server_start
|
@auth.before_server_start
|
||||||
async def connect_auth_client(app, loop):
|
async def connect_auth_client(app, loop):
|
||||||
|
|
|
@ -1,28 +1,64 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import math
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import argparse
|
import argparse
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import coloredlogs
|
||||||
|
|
||||||
from obs.api.app import app
|
from obs.api.app import app
|
||||||
from obs.api.db import connect_db
|
from obs.api.db import connect_db
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def format_size(n, b=1024):
|
||||||
|
if n == 0:
|
||||||
|
return "0 B"
|
||||||
|
if n < 0:
|
||||||
|
return "-" + format_size(n, b)
|
||||||
|
e = math.floor(math.log(n, b))
|
||||||
|
prefixes = ["", "Ki", "Mi", "Gi", "Ti"] if b == 1024 else ["", "K", "M", "G", "T"]
|
||||||
|
e = min(e, len(prefixes) - 1)
|
||||||
|
r = n / b**e
|
||||||
|
s = f"{r:0.2f}" if e > 0 else str(n)
|
||||||
|
return f"{s} {prefixes[e]}B"
|
||||||
|
|
||||||
|
|
||||||
|
class AccessLogFilter(logging.Filter):
|
||||||
|
def filter(self, record):
|
||||||
|
if not record.msg:
|
||||||
|
record.msg = (
|
||||||
|
f"{record.request} - {record.status} ({format_size(record.byte)})"
|
||||||
|
)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
debug = app.config.DEBUG
|
debug = app.config.DEBUG
|
||||||
|
|
||||||
logging.basicConfig(
|
coloredlogs.install(
|
||||||
level=logging.DEBUG if debug else logging.INFO,
|
level=logging.DEBUG if app.config.get("VERBOSE", debug) else logging.INFO,
|
||||||
format="%(levelname)s: %(message)s",
|
milliseconds=True,
|
||||||
|
isatty=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
for ln in ["sanic.root", "sanic.error", "sanic.access"]:
|
||||||
|
l = logging.getLogger(ln)
|
||||||
|
for h in list(l.handlers):
|
||||||
|
l.removeHandler(h)
|
||||||
|
|
||||||
|
logging.getLogger("sanic.access").addFilter(AccessLogFilter())
|
||||||
|
|
||||||
app.run(
|
app.run(
|
||||||
host=app.config.HOST,
|
host=app.config.HOST,
|
||||||
port=app.config.PORT,
|
port=app.config.PORT,
|
||||||
debug=debug,
|
debug=debug,
|
||||||
auto_reload=app.config.get("AUTO_RELOAD", debug),
|
auto_reload=app.config.get("AUTO_RELOAD", debug),
|
||||||
|
# access_log=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
coloredlogs~=15.0.1
|
||||||
sanic~=21.9.3
|
sanic~=21.9.3
|
||||||
oic~=1.3.0
|
oic~=1.3.0
|
||||||
sanic-session~=0.8.0
|
sanic-session~=0.8.0
|
||||||
|
|
|
@ -10,6 +10,7 @@ setup(
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
package_data={},
|
package_data={},
|
||||||
install_requires=[
|
install_requires=[
|
||||||
|
"coloredlogs~=15.0.1",
|
||||||
"sanic~=21.9.3",
|
"sanic~=21.9.3",
|
||||||
"oic>=1.3.0, <2",
|
"oic>=1.3.0, <2",
|
||||||
"sanic-session~=0.8.0",
|
"sanic-session~=0.8.0",
|
||||||
|
|
Loading…
Reference in a new issue