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
from rich.logging import RichHandler
import os
from yunohost.interface import Interface
from yunohost.user import user, group, permission
from moulinette import m18n
from moulinette.interfaces.cli import get_locale
from moulinette.utils.log import configure_logging
def create_cli_interface():
init_i18n()
init_logging(interface="cli")
from yunohost.user import user, group, permission
from yunohost.log import log
app = Interface(root=True)
user.add(group)
user.add(permission)
app.add(user)
app.add(log)
return app.instance
@ -24,6 +27,9 @@ def create_api_interface():
init_i18n()
init_logging(interface="cli")
from yunohost.user import user, group, permission
from yunohost.log import log
app = Interface(root=True)
# Intermediate router to have distincts categories in swagger
user_sub = Interface(prefix="/users")
@ -31,6 +37,7 @@ def create_api_interface():
user_sub.add(group)
user_sub.add(permission)
app.add(user_sub)
app.add(log)
return app.instance
@ -41,6 +48,63 @@ def init_i18n():
def init_logging(interface="cli", debug=False, quiet=False, logdir="/var/log/yunohost"):
logging.basicConfig(
level="NOTSET", format="%(message)s", handlers=[RichHandler(show_time=False)]
)
engine = "typer" if interface == "cli" else "fastapi"
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)