Format your python logs with colours based on the log levels.
Project description
Rainbow Log
Format your python logs with colours based on the log levels.
Installation
You can instll the package with pip or conda.
$ pip install rainbowlog
$ conda install rainbowlog -c abrahammurciano
$ conda install rainbowlog -c conda-forge
Links
Usage
Here's a basic example of a script that logs colorfully to the console, but regularly to a file.
import logging
import rainbowlog
logger = logging.getLogger(__name__)
# This one will write to the console
stream_handler = logging.StreamHandler()
# This one will write to a file
file_handler = logging.FileHandler("output.log")
# Here we decide how we want the logs to look like
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# We want the stream handler to be colorful
stream_handler.setFormatter(rainbowlog.Formatter(formatter))
# We don't want the file handler to be colorful
file_handler.setFormatter(formatter)
# Finally we add the handlers to the logger
logger.addHandler(stream_handler)
logger.addHandler(file_handler)
if __name__ == "__main__":
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")
If you want to change the format of the logs for each log level, you can use any callable that takes a string and returns the same string with ANSI codes surrounding it. There are many libraries you can use to provide such callables.
import logging
from rainbowlog import Formatter
# Here are some libraries you can use to get a style callable without dealing with ANSI codes
from constyle import Style, Attributes as Attrs
import termcolor
from functools import partial
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
color_formatter = Formatter(
formatter,
log_styles={
logging.DEBUG: Style(Attrs.BLUE, Attrs.FAINT), # An example using constyle
logging.INFO: lambda s: f"\033[32m{s}\033[0m", # An example using lambdas
logging.WARNING: termcolor.red, # An example using termcolor's predifined functions
logging.ERROR: partial(termcolor.colored, color="red", on_color="on_white", attrs=["bold"]), # An example using functools.partial
logging.CRITICAL: Attrs.RED + Attrs.ON_YELLOW + Attrs.BOLD + Attrs.UNDERLINE, # An example using constyle's added attributes
}
exception_style=lambda s: f"{Attrs.RED + Attrs.ON_WHITE + Attrs.BOLD}{s}{Attrs.RESET}" # An example using lambdas and constyle,
stack_style=Attrs.RED, # An example using a single constyle attribute
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rainbowlog-2.0.4.tar.gz
(4.4 kB
view details)
Built Distribution
File details
Details for the file rainbowlog-2.0.4.tar.gz
.
File metadata
- Download URL: rainbowlog-2.0.4.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.8 CPython/3.7.16 Linux/5.15.0-1035-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba31c7767f34654d8c409ebfa3ba7906c69867ca1f6504f9f5ef97ed8147aba8 |
|
MD5 | ce7eed727f7bb6f2888d30f4250dfce7 |
|
BLAKE2b-256 | 686844a28866223bcd02b536d81b968efc68b07d2bac193181eb61b57060099f |
File details
Details for the file rainbowlog-2.0.4-py3-none-any.whl
.
File metadata
- Download URL: rainbowlog-2.0.4-py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.8 CPython/3.7.16 Linux/5.15.0-1035-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb9d2558dd243521d3e80f9530354e42cf241d414aba8c04288f49ad25bf2ead |
|
MD5 | f0ef8d3561bf9d461b2050805e5a5844 |
|
BLAKE2b-256 | d74237f7290a0d8454de262b8996da9195e7b587e9e6a36fcbd14430977fe898 |