Skip to content

Commit

Permalink
Improve log handling.
Browse files Browse the repository at this point in the history
Each process now writes to its own log file.

Documentation is in https://loguru.readthedocs.io/en/stable/overview.html
For hints on how to format log message, see
Delgan/loguru#586
  • Loading branch information
SvenRohrTNG committed Aug 17, 2023
1 parent 9f3beea commit 10d4978
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 17 deletions.
1 change: 1 addition & 0 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ scipy = "*"
sentencepiece = "*"
torch = {version = "*", index = "downloadpytorch"}
protobuf = "*"
loguru = "*"

[dev-packages]

Expand Down
10 changes: 9 additions & 1 deletion Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion app/Llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from transformers import AutoModelForCausalLM, LlamaForCausalLM, AutoTokenizer, LlamaTokenizer
from transformers import StoppingCriteria, StoppingCriteriaList

from app.logger import logger
from loguru import logger
from app.util import ModelConfig


Expand Down
4 changes: 2 additions & 2 deletions app/generators.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
from typing import List
from uuid import uuid4

from loguru import logger

from app.Llm import Llm
from app.logger import logger
from app.model.api_models import ChatCompletionRequestPayload, ChatCompletionApiResponse, ChatCompletionApiChoice, ChatMessage, ApiUsage
from app.model.api_models import CodingApiResponse, CodingRequestPayload, CodingParameters
from app.model.api_models import GeneratorBase, GeneratorException
Expand Down Expand Up @@ -91,4 +92,3 @@ async def generate(self, request_payload: CodingRequestPayload) -> CodingApiResp
logger.debug(f"Full stacktrace: \n{traceback.format_exc()}")
raise GeneratorException("Internal error invoking the model. Please let us know that you are experiencing this error.")
return self.generate_default_api_response(answer, 200)

36 changes: 27 additions & 9 deletions app/logger.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,30 @@
import logging
import sys

logging.basicConfig(
format="%(asctime)s %(levelname)s %(message)s",
level=logging.DEBUG,
handlers=[
logging.FileHandler('app.log'),
logging.StreamHandler()
]
)
from app.util import ModelConfig, ApiConfig

logger = logging.getLogger('app')

def configure_logger(api_config: ApiConfig, model_config: ModelConfig):
from loguru import logger

class InterceptHandler(logging.Handler):
def emit(self, record):
# Get corresponding Loguru level if it exists.
try:
level = logger.level(record.levelname).name
except ValueError:
level = record.levelno

# Find caller from where originated the logged message.
frame, depth = sys._getframe(6), 6
while frame and frame.f_code.co_filename == logging.__file__:
frame = frame.f_back
depth += 1

logger.opt(depth=depth, exception=record.exc_info).log(level, record.getMessage())

logger_format = "{time:YYYY-MM-DD HH:mm:ss.SSS} | {level: <8} | {message}"

logging.basicConfig(handlers=[InterceptHandler()], level=0, force=True)

logger.add(f"{api_config.api_type}_{model_config.model_name}" + "_{time}.log", format=logger_format, rotation="50MB", level="DEBUG")
4 changes: 3 additions & 1 deletion app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
import uvicorn
from fastapi import FastAPI, APIRouter, HTTPException, Depends, Security
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
from loguru import logger

from app.Llm import Llm
from app.generators import CodeGenerator, ChatGenerator
from app.logger import logger
from app.logger import configure_logger
from app.request_handler import RequestHandler
from app.request_handler import RequestHandlerProvider
from app.routers.completion import get_completion_router
Expand Down Expand Up @@ -61,6 +62,7 @@ def add_feedback_endpoint(router):

def main():
api_config, model_config, server_config = get_config_from_arguments()
configure_logger(api_config, model_config)
app = build_app(api_config, model_config)
uvicorn.run(app, **server_config.model_dump())

Expand Down
2 changes: 1 addition & 1 deletion app/request_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from fastapi import Request
from pydantic import BaseModel

from app.logger import logger
from loguru import logger
from app.model.api_models import GeneratorBase, GeneratorException, ApiResponse, RequestPayload


Expand Down
3 changes: 1 addition & 2 deletions app/routers/feedback.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from collections import defaultdict

from fastapi import APIRouter
from loguru import logger
from pydantic import BaseModel

from app.logger import logger


class Feedback(BaseModel):
client_name: str
Expand Down

0 comments on commit 10d4978

Please sign in to comment.