Herman Code πŸš€

How can I color Python logging output

February 20, 2025

πŸ“‚ Categories: Python
How can I color Python logging output

Including colour to your Python logging output tin importantly better its readability, particularly once dealing with ample logs oregon analyzable functions. Rapidly figuring out antithetic log ranges (DEBUG, Data, Informing, Mistake, Captious) astatine a glimpse turns into overmuch simpler with colour-coding. This permits for quicker debugging and troubleshooting, redeeming you invaluable clip and attempt. This article explores assorted strategies to accomplish this, ranging from elemental constructed-successful modules to much precocious 3rd-organization libraries.

Utilizing the logging Module’s Formatter

Python’s constructed-successful logging module gives a versatile manner to format your log messages, together with including colour. The cardinal lies successful utilizing ANSI flight codes inside the Formatter people. These codes are interpreted by the terminal to show matter successful assorted colours and kinds.

For case, the flight codification \033[91m represents agleam reddish matter. You tin embed these codes straight into your format drawstring. Nevertheless, this attack tin go cumbersome if you demand to use antithetic colours for antithetic log ranges.

A much structured attack includes creating customized formatters for all log flat, assigning circumstantial colours to them. This improves maintainability and makes your codification simpler to publication.

Leveraging colorlog

The colorlog room presents a less complicated and much almighty resolution. It offers pre-outlined formatters and features to easy adhd colour to your logging output. Its intuitive API makes customization easy, permitting you to specify customized log colours and codecs with minimal codification.

colorlog robotically detects whether or not the output watercourse helps colour and gracefully handles conditions wherever it doesn’t. This ensures your logs stay readable equal once redirected to a record oregon piped to different bid.

Set up is elemental: pip instal colorlog. This room is a large prime for some learners and skilled builders owed to its easiness of usage and flexibility.

Precocious Customization with Affluent

For much blase formatting and affluent matter output, the Affluent room is an fantabulous prime. Piece it’s not particularly designed for logging, its almighty rendering capabilities brand it easy adaptable for this intent. Affluent tin grip analyzable layouts, tables, advancement bars, and of class, coloured matter with easiness.

Piece Affluent gives better flexibility, it besides includes a somewhat steeper studying curve in contrast to colorlog. If you necessitate extremely custom-made and visually interesting logs, the other attempt is fine worthy it.

Past elemental colour coding, Affluent permits you to kind your log messages with antithetic fonts, backgrounds, and equal emojis. This is peculiarly utile for highlighting captious accusation oregon creating visually distinctive logs.

Integrating Coloured Logs into Your Exertion

Careless of the technique you take, integrating coloured logs into your exertion follows a akin form. You’ll demand to configure the logging handlers and formatters to usage your chosen colour strategy. This tin beryllium completed programmatically oregon by way of a configuration record.

Retrieve to see your mark assemblage and situation once selecting your colour strategy. Guarantee adequate opposition for readability, and debar utilizing colours that whitethorn person conflicting meanings successful antithetic contexts. For case, greenish mostly signifies occurrence, piece reddish frequently signifies errors.

Present’s a elemental illustration of utilizing colorlog:

import logging import colorlog handler = colorlog.StreamHandler() handler.setFormatter(colorlog.ColoredFormatter( '%(log_color)s%(levelname)-8s%(reset)s %(bluish)s%(communication)s', datefmt=No, reset=Actual, log_colors={ 'DEBUG': 'cyan', 'Information': 'greenish', 'Informing': 'yellowish', 'Mistake': 'reddish', 'Captious': 'reddish,bg_white', }, kind='%' )) logger = colorlog.getLogger('illustration') logger.addHandler(handler) logger.setLevel(logging.DEBUG) logger.debug("This is a debug communication.") logger.data("This is an data communication.") logger.informing("This is a informing communication.") logger.mistake("This is an mistake communication.") logger.captious("This is a captious communication.") 
  • Colour-coded logs heighten readability and velocity ahead debugging.
  • Take the technique that champion fits your wants and complexity necessities.
  1. Instal the essential room (e.g., pip instal colorlog).
  2. Configure the logging handler and formatter.
  3. Combine the logger into your exertion codification.

[Infographic placeholder: Illustrating the quality betwixt plain and coloured logs]

FAQ

Q: However tin I disable coloured logs once redirecting output to a record?

A: About libraries, together with colorlog, robotically observe if the output watercourse helps colour. Once redirecting to a record, colour codes are normally suppressed routinely. You tin besides explicitly disable colour output utilizing room-circumstantial settings.

Coloured logging output drastically improves the debugging education successful Python. Selecting the correct implement, whether or not the constructed-successful logging module with ANSI flight codes, the handy colorlog room, oregon the versatile Affluent room, relies upon connected your task’s circumstantial necessities. Research these choices and seat the quality coloured logs tin brand successful your workflow. For much precocious logging strategies, seat our station astir structured logging present.

Outer Sources:

Question & Answer :
Any clip agone, I noticed a Mono exertion with coloured output, presumably due to the fact that of its log scheme (due to the fact that each the messages had been standardized).

Present, Python has the logging module, which lets you specify a batch of choices to customise output. Truthful, I’m imagining thing akin would beryllium imaginable with Python, however I tin’t discovery retired however to bash this anyplace.

Is location immoderate manner to brand the Python logging module output successful colour?

What I privation (for case) errors successful reddish, debug messages successful bluish oregon yellowish, and truthful connected.

Of class this would most likely necessitate a suitable terminal (about contemporary terminals are); however I might fallback to the first logging output if colour isn’t supported.

Immoderate concepts however I tin acquire coloured output with the logging module?

A Python three resolution, with nary further packages required

Line to the assemblage: delight bash not edit the reply. I cognize its not the about optimum manner successful word of coding, however the best to realize and about readable manner to acquire the essence of the procedure

1. Specify a people

import logging people CustomFormatter(logging.Formatter): gray = "\x1b[38;20m" yellowish = "\x1b[33;20m" reddish = "\x1b[31;20m" bold_red = "\x1b[31;1m" reset = "\x1b[0m" format = "%(asctime)s - %(sanction)s - %(levelname)s - %(communication)s (%(filename)s:%(lineno)d)" Codecs = { logging.DEBUG: gray + format + reset, logging.Information: gray + format + reset, logging.Informing: yellowish + format + reset, logging.Mistake: reddish + format + reset, logging.Captious: bold_red + format + reset } def format(same, evidence): log_fmt = same.Codecs.acquire(evidence.levelno) formatter = logging.Formatter(log_fmt) instrument formatter.format(evidence) 

2. Instantiate logger:

# make logger with 'spam_application' logger = logging.getLogger("My_app") logger.setLevel(logging.DEBUG) # make console handler with a larger log flat ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) ch.setFormatter(CustomFormatter()) logger.addHandler(ch) 

three. And usage:

logger.debug("debug communication") logger.information("data communication") logger.informing("informing communication") logger.mistake("mistake communication") logger.captious("captious communication") 

Consequence:

enter image description here

The afloat colour strategy:

enter image description here

For Home windows:

This resolution plant connected Mac OS, IDE terminals. Seems similar the Home windows bid punctual doesn’t person colours astatine each by default. Present are directions connected however to change them, which I haven’t attempt https://www.howtogeek.com/322432/however-to-customise-your-bid-prompts-colour-strategy-with-microsofts-colortool/