add graylog config (#23)

* add additional chat gpt request error

* add graylog config
This commit is contained in:
Dmitry Afanasyev
2023-10-03 09:19:33 +03:00
committed by GitHub
parent ae6cdb896a
commit e465d71320
12 changed files with 103 additions and 53 deletions

View File

@@ -3,6 +3,7 @@ import sys
from types import FrameType
from typing import TYPE_CHECKING, Any, cast
import graypy
from loguru import logger
from sentry_sdk.integrations.logging import EventHandler
@@ -40,20 +41,35 @@ def configure_logging(*, level: LogLevelEnum, enable_json_logs: bool, enable_sen
intercept_handler = InterceptHandler()
logging.basicConfig(handlers=[intercept_handler], level=logging_level)
formatter = _json_formatter if enable_json_logs else _text_formatter
logger.configure(
handlers=[
base_config_handlers = [intercept_handler]
loguru_handlers = [
{
"sink": sys.stdout,
"level": logging_level,
"serialize": enable_json_logs,
"format": formatter,
"colorize": True,
}
]
if settings.GRAYLOG_HOST:
graylog_handler = graypy.GELFTCPHandler(settings.GRAYLOG_HOST, 12201)
base_config_handlers.append(graylog_handler)
loguru_handlers.append(
{
"sink": sys.stdout,
"sink": graylog_handler,
"level": logging_level,
"serialize": enable_json_logs,
"format": formatter,
"colorize": True,
"colorize": False,
}
],
)
)
logging.basicConfig(handlers=base_config_handlers, level=logging_level)
logger.configure(handlers=loguru_handlers)
# sentry sdk не умеет из коробки работать с loguru, нужно добавлять хандлер
# https://github.com/getsentry/sentry-python/issues/653#issuecomment-788854865

View File

@@ -20,7 +20,7 @@ from speech_recognition import (
from constants import (
AUDIO_SEGMENT_DURATION,
CHAT_GPT_BASE_URI,
INVALID_GPT_MODEL_MESSAGE,
INVALID_GPT_REQUEST_MESSAGES,
)
from settings.config import settings
@@ -124,10 +124,11 @@ class ChatGptService:
try:
response = await self.do_request(chat_gpt_request)
status = response.status_code
if response.text == INVALID_GPT_MODEL_MESSAGE:
message = f"{INVALID_GPT_MODEL_MESSAGE}: {settings.GPT_MODEL}"
logger.info(message, data=chat_gpt_request)
return message
for message in INVALID_GPT_REQUEST_MESSAGES:
if message in response.text:
message = f"{message}: {settings.GPT_MODEL}"
logger.info(message, data=chat_gpt_request)
return message
if status != httpx.codes.OK:
logger.info(f"got response status: {status} from chat api", data=chat_gpt_request)
return "Что-то пошло не так, попробуйте еще раз или обратитесь к администратору"