Skip to content

Improved version of the standard logger.

License

Notifications You must be signed in to change notification settings

vd2org/betterlogging

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3a51cca · Feb 5, 2024

History

57 Commits
Feb 5, 2024
Feb 5, 2024
Feb 5, 2024
Feb 5, 2024
Oct 16, 2020
Feb 5, 2024
Feb 5, 2024
Oct 16, 2020
Oct 22, 2020
Oct 16, 2020
Feb 5, 2024

Repository files navigation

BetterLogging

BetterLogging

Improved version of the standard logger.

  • Added TRACE level.
  • Added ColorizedFormatter.
  • Added better traceback formatting.

This package patching the standard logging library.

Thus, after import, all improvements will be available inside the logging module.

But for better typing, I prefer to use betterlogging everywhere.

Requirements

Python 3.7 and above. No additional dependencies.

Installation

pip install betterlogging

Usage

Simple usage

import betterlogging as logging


logging.basic_colorized_config(level=logging.INFO)

logger = logging.getLogger('test')

logger.trace("some trace message")
logger.debug("some debug message")
logger.info("some info message")
logger.warning("some warning message")
logger.error("some error message")
logger.critical("some critical message")

More advanced usage

import betterlogging as logging


# You can use shortcut:
logger = logging.get_colorized_logger(name="test")

# Or, if you want to configure formatter:
handler = logging.StreamHandler()
handler.setFormatter(logging.ColorizedFormatter(hide_lib_diagnose=False))

logger.addHandler(handler)
logger.setLevel(logging.TRACE)

logger.trace("some trace message")
logger.debug("some debug message")
logger.info("some info message")
logger.warning("some warning message")
logger.error("some error message")
logger.critical("some critical message")

def div(x: int, y: int) -> float:
    return x / y

try:
    div(1, 0)
except:
    logger.exception("Some exception")

Config for uvicorn

{
  "version": 1,
  "disable_existing_loggers": false,
  "formatters": {
    "default": {
      "()": "betterlogging.ColorizedFormatter"
    },
    "access": {
      "()": "betterlogging.ColorizedFormatter",
      "fmt": "%(c_fg_green)s%(asctime)s %(c_color)s%(levelname)-8s%(c_reset)s %(c_fg_cyan)s[%(name)s] %(c_reset)s%(message)s"
    }
  },
  "handlers": {
    "default": {
      "formatter": "default",
      "class": "logging.StreamHandler"
    },
    "access": {
      "formatter": "access",
      "class": "logging.StreamHandler",
      "stream": "ext://sys.stdout"
    }
  },
  "loggers": {
    "": {
      "handlers": [
        "default"
      ],
      "level": "DEBUG"
    },
    "uvicorn.error": {
      "level": "INFO"
    },
    "uvicorn.access": {
      "handlers": [
        "access"
      ],
      "level": "INFO",
      "propagate": false
    }
  }
}
uvicorn application:app --debug --reload --log-config ./logging.json