set log level from database config

This commit is contained in:
Izalia Mae 2022-12-14 05:31:45 -05:00
parent 426adf1117
commit 0322fa567b
3 changed files with 23 additions and 13 deletions

View file

@ -14,6 +14,7 @@ from datetime import datetime, timedelta
from .config import Config
from .database import Database
from .http_client import HttpClient
from .logger import set_level
from .misc import DotDict, check_open_port, set_app
from .views import routes
@ -41,6 +42,9 @@ class Application(web.Application):
self.database.create()
self.set_signal_handler()
with self.database.session as s:
set_level(s.get_config('log_level'))
@property
def client(self):

View file

@ -4,6 +4,7 @@ from datetime import datetime
from tinysql import Column, Table
from urllib.parse import urlparse
from .logger import set_level
from .misc import AppBase, DotDict, boolean
@ -245,6 +246,9 @@ class Connection(tinysql.ConnectionMixin):
if value == '__DEFAULT__':
value = DEFAULT_CONFIG[key][1]
if key == 'log_level':
set_level(value)
row = self.select('config', key=key).one()
if row:

View file

@ -4,6 +4,16 @@ import os
from pathlib import Path
LEVELS = {
'critical': logging.CRITICAL,
'error': logging.ERROR,
'warning': logging.WARNING,
'info': logging.INFO,
'verbose': 15,
'debug': logging.DEBUG
}
## Add the verbose logging level
def verbose(message, *args, **kwargs):
if not logging.root.isEnabledFor(logging.VERBOSE):
@ -15,10 +25,6 @@ setattr(logging, 'verbose', verbose)
setattr(logging, 'VERBOSE', 15)
logging.addLevelName(15, 'VERBOSE')
## Get log level and file from environment if possible
env_log_level = os.environ.get('LOG_LEVEL', 'INFO').upper()
try:
env_log_file = Path(os.environ.get('LOG_FILE')).expanduser().resolve()
@ -26,14 +32,6 @@ except TypeError:
env_log_file = None
## Make sure the level from the environment is valid
try:
log_level = getattr(logging, env_log_level)
except AttributeError:
log_level = logging.INFO
## Set logging config
handlers = [logging.StreamHandler()]
@ -41,7 +39,11 @@ if env_log_file:
handlers.append(logging.FileHandler(env_log_file))
logging.basicConfig(
level = log_level,
level = logging.INFO,
format = "[%(asctime)s] %(levelname)s: %(message)s",
handlers = handlers
)
def set_level(level):
logging.getLogger().setLevel(LEVELS[level.lower()])