Skip to content

Instantly share code, notes, and snippets.

@ItsQuadrus
Created July 27, 2023 18:24
Show Gist options
  • Save ItsQuadrus/bdcc066f0b570ac72527610aa815269d to your computer and use it in GitHub Desktop.
Save ItsQuadrus/bdcc066f0b570ac72527610aa815269d to your computer and use it in GitHub Desktop.
Easy and simple color logging for Python
"""
IMPORT THIS IN YOUR CODE LIKE THIS:
from logging_config import logger
logger.info("It works!")
"""
import logging
# Create a named logger
logger = logging.getLogger("My_Logger")
logger.setLevel(logging.DEBUG)
# Create a formatter with colored log levels - looks like <date and time> My_Logger [ERROR] This is an error mesage.
formatter = logging.Formatter(
"%(asctime)s \033[1m%(levelname)s\033[0m \033[1m%(name)s\033[0m %(message)s"
)
# Add a file handler that logs all messages
file_handler = logging.FileHandler("debug.log")
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# Add a stream handler that logs messages with severity level INFO or higher
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
# Add custom log level names with colors
logging.addLevelName(
logging.DEBUG, "\033[1;30m%s\033[1;0m" % logging.getLevelName(logging.DEBUG)
) # gray
logging.addLevelName(
logging.INFO, "\033[1;34m%s\033[1;0m" % logging.getLevelName(logging.INFO)
) # blue
logging.addLevelName(
logging.WARNING, "\033[1;33m%s\033[1;0m" % logging.getLevelName(logging.WARNING)
) # yellow
logging.addLevelName(
logging.ERROR, "\033[1;31m%s\033[1;0m" % logging.getLevelName(logging.ERROR)
) # red
logging.addLevelName(
logging.CRITICAL, "\033[1;35m%s\033[1;0m" % logging.getLevelName(logging.CRITICAL)
) # magenta
def test_logging():
print("--- Testing logging... ---")
logger.debug("This is a debug message.")
logger.info("This is an info message.")
logger.warning("This is a warning message.")
logger.error("This is an error message.")
logger.critical("This is a critical message.")
logger.exception("This is an exception message.")
logger.log(25, "This is a custom message with severity level 25.")
print("--- End of test ---\n")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment