Last active
May 17, 2023 16:15
-
-
Save nkhitrov/62874c6805c8106fa1ac3f9164147887 to your computer and use it in GitHub Desktop.
loguru_formatter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from loguru import logger | |
def console_formatter(record) -> str: | |
# WARNING !!! | |
# Функция должна возвращать строку, которая содержит только шаблоны для форматирования. | |
# Если в строку прокидывать значения из record (или еще откуда-либо), | |
# то loguru может принять их за f-строки и попытается обработать, что приведет к ошибке. | |
# Например, если нужно достать какое-то значение из поля extra, вместо того чтобы прокидывать его в строку формата, | |
# нужно прокидывать подстроку вида {extra[тут_ключ]} | |
# Стандартный формат loguru. Задается через env LOGURU_FORMAT | |
format_ = ( | |
"<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | " | |
"<level>{level: <8}</level> | " | |
"<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>" | |
) | |
# Добавляем мета параметры по типу user_id, art_id, которые передаются через kwargs | |
# >>> logger.info(..., user_id=user_id) | |
extra = record["extra"] | |
if extra: | |
formatted = ", ".join(f"{key}" + "={extra[" + str(key) + "]}" for key, value in extra.items()) # noqa: ISC003 | |
format_ += f" - <cyan>{formatted}</cyan>" | |
format_ += "\n" | |
if record["exception"] is not None: | |
format_ += "{exception}\n" | |
return format_ | |
handler = { | |
"sink": sys.stdout, | |
"level": "INFO", | |
"serialize": True, | |
"format": console_formatter, | |
} | |
logger.configure(handlers=[handler]) | |
logger.info("message", param1=10, param2=20) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment