Improved logging and fixed missing locale strings

This commit is contained in:
2025-04-16 17:56:41 +02:00
parent 906770ef60
commit 13f92b2817
6 changed files with 54 additions and 14 deletions

View File

@@ -1,12 +1,13 @@
import logging
from dataclasses import dataclass from dataclasses import dataclass
from logging import Logger
from typing import Union from typing import Union
from bson import ObjectId from bson import ObjectId
from modules.database_mongo import col_users from modules.database_mongo import col_users
from modules.logging_utils import get_logger
logger = logging.getLogger(__name__) logger: Logger = get_logger(__name__)
@dataclass @dataclass

View File

@@ -3,8 +3,9 @@ from dataclasses import dataclass
from typing import Union from typing import Union
from modules.database_sqlite import cursor from modules.database_sqlite import cursor
from modules.logging_utils import get_logger
logger = logging.getLogger(__name__) logger: logging.Logger = get_logger(__name__)
@dataclass @dataclass

View File

@@ -10,6 +10,7 @@
}, },
"commands": { "commands": {
"start": "Start using the bot", "start": "Start using the bot",
"shutdown": "Turn off the bot",
"language": "Change bot's language", "language": "Change bot's language",
"remove_commands": "Unregister all commands" "remove_commands": "Unregister all commands"
}, },

View File

@@ -9,6 +9,7 @@
}, },
"commands": { "commands": {
"start": "Почати користуватись ботом", "start": "Почати користуватись ботом",
"shutdown": "Вимкнути бота",
"language": "Змінити мову бота", "language": "Змінити мову бота",
"remove_commands": "Видалити всі команди" "remove_commands": "Видалити всі команди"
}, },

21
main.py
View File

@@ -1,15 +1,16 @@
import contextlib import contextlib
import logging import logging.config
from argparse import ArgumentParser from argparse import ArgumentParser
from os import getpid from logging import Logger
from os import getpid, makedirs
from pathlib import Path from pathlib import Path
from sys import exit from sys import exit
from libbot.utils import config_get, json_read from libbot.utils import json_read
from classes.pyroclient import PyroClient from classes.pyroclient import PyroClient
from modules.logging_utils import get_logging_config, get_logger
# Main uses MongoDB implementation of DB # Main uses MongoDB implementation of DB,
# but you can also select SQLite one below # but you can also select SQLite one below
# from modules.migrator_sqlite import migrate_database # from modules.migrator_sqlite import migrate_database
from modules.migrator_mongo import migrate_database from modules.migrator_mongo import migrate_database
@@ -22,13 +23,11 @@ from modules.scheduler import scheduler
# from convopyro import Conversation # from convopyro import Conversation
logging.basicConfig( makedirs(Path("logs/"), exist_ok=True)
level=logging.DEBUG if config_get("debug") else logging.INFO,
format="%(name)s.%(funcName)s | %(levelname)s | %(message)s",
datefmt="[%X]",
)
logger = logging.getLogger(__name__) logging.config.dictConfig(get_logging_config())
logger: Logger = get_logger(__name__)
parser = ArgumentParser( parser = ArgumentParser(
prog="__name__", prog="__name__",

37
modules/logging_utils.py Normal file
View File

@@ -0,0 +1,37 @@
from pathlib import Path
from typing import Any, Dict
from libbot.utils import config_get
import logging
from logging import Logger
def get_logging_config() -> Dict[str, Any]:
return {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
"file": {
"class": "logging.handlers.RotatingFileHandler",
"filename": str(Path("logs/latest.log")),
"maxBytes": 500000,
"backupCount": 10,
"formatter": "simple",
},
"console": {"class": "logging.StreamHandler", "formatter": "systemd"},
},
"formatters": {
"simple": {
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
},
"systemd": {"format": "%(name)s - %(levelname)s - %(message)s"},
},
"root": {
"level": "DEBUG" if config_get("debug") else "INFO",
"handlers": ["file", "console"],
},
}
def get_logger(name: str) -> Logger:
return logging.getLogger(name)