Created
July 27, 2023 18:24
-
-
Save ItsQuadrus/bdcc066f0b570ac72527610aa815269d to your computer and use it in GitHub Desktop.
Easy and simple color logging for Python
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
""" | |
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