логирование
This commit is contained in:
parent
a6032d595c
commit
1d97d88dad
|
|
@ -0,0 +1 @@
|
||||||
|
files.*
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
import logging
|
||||||
|
import functools
|
||||||
|
import time
|
||||||
|
|
||||||
|
FUNC_LEVEL = 15
|
||||||
|
logging.addLevelName(FUNC_LEVEL, "FUNC")
|
||||||
|
def func_actions(self, message, *args, **kwargs):
|
||||||
|
if self.isEnabledFor(FUNC_LEVEL):
|
||||||
|
self._log(FUNC_LEVEL, message, args, **kwargs)
|
||||||
|
|
||||||
|
logging.Logger.func_actions = func_actions
|
||||||
|
|
||||||
|
|
||||||
|
# Создаем основной логгер
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
logger.setLevel(logging.DEBUG) # Устанавливаем минимальный уровень логирования
|
||||||
|
|
||||||
|
# Создаем форматтер
|
||||||
|
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
|
# Настройка обработчика для всех сообщений
|
||||||
|
all_file_handler = logging.FileHandler('./files/all.log', encoding='utf-8')
|
||||||
|
all_file_handler.setLevel(logging.DEBUG) # Записываем все уровни
|
||||||
|
all_file_handler.setFormatter(formatter)
|
||||||
|
|
||||||
|
# Настройка обработчика для ошибок
|
||||||
|
error_file_handler = logging.FileHandler('./files/error.log', encoding='utf-8')
|
||||||
|
error_file_handler.setLevel(logging.ERROR) # Записываем только ошибки
|
||||||
|
error_file_handler.setFormatter(formatter)
|
||||||
|
|
||||||
|
# Настройка обработчика для консоли
|
||||||
|
console_handler = logging.StreamHandler()
|
||||||
|
console_handler.setLevel(logging.DEBUG)
|
||||||
|
console_handler.setFormatter(formatter)
|
||||||
|
|
||||||
|
# Добавляем все обработчики к логгеру
|
||||||
|
logger.addHandler(all_file_handler)
|
||||||
|
logger.addHandler(error_file_handler)
|
||||||
|
logger.addHandler(console_handler)
|
||||||
|
|
||||||
|
def log_function_call(func):
|
||||||
|
@functools.wraps(func)
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
logger.func_actions(f"Вызов функции {func.__name__}")
|
||||||
|
start_time = time.perf_counter()
|
||||||
|
try:
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
end_time = time.perf_counter()
|
||||||
|
execution_time_ms = (end_time - start_time) * 1000
|
||||||
|
logger.func_actions(f"Функция {func.__name__} завершена за {execution_time_ms:.2f} мс")
|
||||||
|
return result
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Ошибка в функции {func.__name__}: {str(e)}")
|
||||||
|
raise
|
||||||
|
return wrapper
|
||||||
48
utils.py
48
utils.py
|
|
@ -2,15 +2,42 @@ import os
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
import json
|
import json
|
||||||
|
import functools
|
||||||
|
from settings.logger import log_function_call, logger
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
mydb = mysql.connector.connect(
|
try:
|
||||||
host=os.getenv('DB_HOST'),
|
mydb = mysql.connector.connect(
|
||||||
user=os.getenv('DB_USER'),
|
host=os.getenv('DB_HOST'),
|
||||||
password=os.getenv('DB_PW'),
|
user=os.getenv('DB_USER'),
|
||||||
database='vok1no' # Добавьте имя базы данных
|
password=os.getenv('DB_PW'),
|
||||||
)
|
database='vok1no'
|
||||||
|
)
|
||||||
|
except mysql.connector.Error as e:
|
||||||
|
print(f"Ошибка при подключении к БД: {e}")
|
||||||
|
mydb = None
|
||||||
|
|
||||||
|
@log_function_call
|
||||||
|
def update_sql_connect():
|
||||||
|
global mydb # Указываем, что используем глобальную переменную
|
||||||
|
|
||||||
|
if mydb is not None:
|
||||||
|
try:
|
||||||
|
mydb.close()
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Ошибка при закрытии соединения: {e}")
|
||||||
|
|
||||||
|
try:
|
||||||
|
mydb = mysql.connector.connect(
|
||||||
|
host=os.getenv('DB_HOST'),
|
||||||
|
user=os.getenv('DB_USER'),
|
||||||
|
password=os.getenv('DB_PW'),
|
||||||
|
database='vok1no'
|
||||||
|
)
|
||||||
|
except mysql.connector.Error as e:
|
||||||
|
print(f"Ошибка при переподключении к БД: {e}")
|
||||||
|
mydb = None
|
||||||
|
|
||||||
def sql_select(sql, val=None):
|
def sql_select(sql, val=None):
|
||||||
try:
|
try:
|
||||||
|
|
@ -83,3 +110,12 @@ try:
|
||||||
print(res)
|
print(res)
|
||||||
except SystemError as e:
|
except SystemError as e:
|
||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
|
|
||||||
|
@log_function_call
|
||||||
|
def test_error():
|
||||||
|
result = 10 / 0
|
||||||
|
return result
|
||||||
|
|
||||||
|
update_sql_connect()
|
||||||
|
test_error()
|
||||||
Loading…
Reference in New Issue