add logging

This commit is contained in:
axolotle 2023-01-13 12:31:08 +01:00
parent 7c2e029f6d
commit 710cdd878a

View file

@ -1,21 +1,24 @@
import logging import os
from rich.logging import RichHandler
from yunohost.interface import Interface from yunohost.interface import Interface
from yunohost.user import user, group, permission
from moulinette import m18n from moulinette import m18n
from moulinette.interfaces.cli import get_locale from moulinette.interfaces.cli import get_locale
from moulinette.utils.log import configure_logging
def create_cli_interface(): def create_cli_interface():
init_i18n() init_i18n()
init_logging(interface="cli") init_logging(interface="cli")
from yunohost.user import user, group, permission
from yunohost.log import log
app = Interface(root=True) app = Interface(root=True)
user.add(group) user.add(group)
user.add(permission) user.add(permission)
app.add(user) app.add(user)
app.add(log)
return app.instance return app.instance
@ -24,6 +27,9 @@ def create_api_interface():
init_i18n() init_i18n()
init_logging(interface="cli") init_logging(interface="cli")
from yunohost.user import user, group, permission
from yunohost.log import log
app = Interface(root=True) app = Interface(root=True)
# Intermediate router to have distincts categories in swagger # Intermediate router to have distincts categories in swagger
user_sub = Interface(prefix="/users") user_sub = Interface(prefix="/users")
@ -31,6 +37,7 @@ def create_api_interface():
user_sub.add(group) user_sub.add(group)
user_sub.add(permission) user_sub.add(permission)
app.add(user_sub) app.add(user_sub)
app.add(log)
return app.instance return app.instance
@ -41,6 +48,63 @@ def init_i18n():
def init_logging(interface="cli", debug=False, quiet=False, logdir="/var/log/yunohost"): def init_logging(interface="cli", debug=False, quiet=False, logdir="/var/log/yunohost"):
logging.basicConfig( engine = "typer" if interface == "cli" else "fastapi"
level="NOTSET", format="%(message)s", handlers=[RichHandler(show_time=False)] logfile = os.path.join(logdir, f"yunohost-{engine}-{interface}.log")
)
if not os.path.isdir(logdir):
os.makedirs(logdir, 0o750)
logging_configuration = {
"version": 1,
"disable_existing_loggers": True,
"formatters": {
"console": {
"format": "%(relativeCreated)-5d %(levelname)-8s %(name)s %(funcName)s - %(message)s"
},
"tty-debug": {"format": "%(relativeCreated)-4d %(message)s"},
"precise": {
"format": "%(asctime)-15s %(levelname)-8s %(name)s %(funcName)s - %(message)s"
},
},
"filters": {
"action": {
"()": "moulinette.utils.log.ActionFilter",
},
},
"handlers": {
"cli": {
"level": "DEBUG" if debug else "INFO",
"()": "rich.logging.RichHandler",
"show_time": False,
# "formatter": "tty-debug" if debug else "",
},
"api": {
"level": "DEBUG" if debug else "INFO",
"class": "moulinette.interfaces.api.APIQueueHandler",
},
"file": {
"class": "logging.FileHandler",
"formatter": "precise",
"filename": logfile,
# "filters": ["action"],
},
},
"loggers": {
"yunohost": {
"level": "DEBUG",
"handlers": ["file", interface] if not quiet else ["file"],
"propagate": False,
},
"moulinette": {
"level": "DEBUG",
"handlers": ["file", interface] if not quiet else ["file"],
"propagate": False,
},
},
"root": {
"level": "DEBUG",
"handlers": ["file", interface] if debug else ["file"],
},
}
configure_logging(logging_configuration)