A colored formatter for the python logging module

Overview

Log formatting with colors!

colorlog.ColoredFormatter is a formatter for use with Python's logging module that outputs records using terminal colors.

Installation

Install from PyPI with:

pip install colorlog

Several Linux distributions provide official packages (Debian, Gentoo, OpenSuse and Ubuntu), and others have user provided packages (Arch AUR, BSD ports, Conda, Fedora packaging scripts).

Usage

import colorlog

handler = colorlog.StreamHandler()
handler.setFormatter(colorlog.ColoredFormatter(
	'%(log_color)s%(levelname)s:%(name)s:%(message)s'))

logger = colorlog.getLogger('example')
logger.addHandler(handler)

The ColoredFormatter class takes several arguments:

  • format: The format string used to output the message (required).
  • datefmt: An optional date format passed to the base class. See logging.Formatter.
  • reset: Implicitly adds a color reset code to the message output, unless the output already ends with one. Defaults to True.
  • log_colors: A mapping of record level names to color names. The defaults can be found in colorlog.default_log_colors, or the below example.
  • secondary_log_colors: A mapping of names to log_colors style mappings, defining additional colors that can be used in format strings. See below for an example.
  • style: Available on Python 3.2 and above. See logging.Formatter.

Color escape codes can be selected based on the log records level, by adding parameters to the format string:

  • log_color: Return the color associated with the records level.
  • <name>_log_color: Return another color based on the records level if the formatter has secondary colors configured (see secondary_log_colors below).

Multiple escape codes can be used at once by joining them with commas when configuring the color for a log level (but can't be used directly in the format string). For example, black,bg_white would use the escape codes for black text on a white background.

The following escape codes are made available for use in the format string:

  • {color}, fg_{color}, bg_{color}: Foreground and background colors.
  • bold, bold_{color}, fg_bold_{color}, bg_bold_{color}: Bold/bright colors.
  • thin, thin_{color}, fg_thin_{color}: Thin colors (terminal dependent).
  • reset: Clear all formatting (both foreground and background colors).

The available color names are black, red, green, yellow, blue, purple, cyan and white.

Examples

Example output

The following code creates a ColoredFormatter for use in a logging setup, using the default values for each argument.

from colorlog import ColoredFormatter

formatter = ColoredFormatter(
	"%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s",
	datefmt=None,
	reset=True,
	log_colors={
		'DEBUG':    'cyan',
		'INFO':     'green',
		'WARNING':  'yellow',
		'ERROR':    'red',
		'CRITICAL': 'red,bg_white',
	},
	secondary_log_colors={},
	style='%'
)

Using secondary_log_colors

Secondary log colors are a way to have more than one color that is selected based on the log level. Each key in secondary_log_colors adds an attribute that can be used in format strings (message becomes message_log_color), and has a corresponding value that is identical in format to the log_colors argument.

The following example highlights the level name using the default log colors, and highlights the message in red for error and critical level log messages.

from colorlog import ColoredFormatter

formatter = ColoredFormatter(
	"%(log_color)s%(levelname)-8s%(reset)s %(message_log_color)s%(message)s",
	secondary_log_colors={
		'message': {
			'ERROR':    'red',
			'CRITICAL': 'red'
		}
	}
)

With dictConfig

logging.config.dictConfig({
	'formatters': {
		'colored': {
			'()': 'colorlog.ColoredFormatter',
			'format': "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s"
		}
	}
})

A full example dictionary can be found in tests/test_colorlog.py.

With fileConfig

...

[formatters]
keys=color

[formatter_color]
class=colorlog.ColoredFormatter
format=%(log_color)s%(levelname)-8s%(reset)s %(bg_blue)s[%(name)s]%(reset)s %(message)s from fileConfig
datefmt=%m-%d %H:%M:%S

An instance of ColoredFormatter created with those arguments will then be used by any handlers that are configured to use the color formatter.

A full example configuration can be found in tests/test_config.ini.

With custom log levels

ColoredFormatter will work with custom log levels added with logging.addLevelName:

import logging, colorlog
TRACE = 5
logging.addLevelName(TRACE, 'TRACE')
formatter = colorlog.ColoredFormatter(log_colors={'TRACE': 'yellow'})
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger = logging.getLogger('example')
logger.addHandler(handler)
logger.setLevel('TRACE')
logger.log(TRACE, 'a message using a custom level')

Compatibility

colorlog works on Python 2.6 and above, including Python 3.

On Windows, colorama is required for colorlog to work properly. It will automatically be included when installing colorlog on windows.

Tests

Tests similar to the above examples are found in tests/test_colorlog.py.

tox will run the tests under all compatible python versions.

Status

colorlog is in maintainance mode. I try and ensure bugfixes are published, but compatibility with Python 2.6+ and Python 3+ makes this a difficult codebase to add features to. Any changes that might break backwards compatibility for existing users will not be considered.

Alternatives

There are some more modern libraries for improving Python logging you may find useful.

Projects using colorlog

Licence

Copyright (c) 2012-2020 Sam Clements [email protected]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • Support bg+fg for log_color/log_message_color

    Support bg+fg for log_color/log_message_color

    Enhancement

    • Added option for log_message_color, which (like log_color) is intended to provide debug level specific coloring for the message (set via log_message_colors in init)
    • Added support for simultaneous fg and bg color settings in log_color/log_message_color by appending another code after a single whitspace example:
    formatter = ColoredFormatter(
            "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s",
            datefmt=None,
            reset=True,
            log_colors={
                'DEBUG':    'cyan',
                'INFO':     'green',
                'WARNING':  'yellow',
                'ERROR':    'red',
                'CRITICAL': 'white bg_red',
            }
    )
    
    enhancement 
    opened by the01 9
  • Behavior changes based on presense of colorama

    Behavior changes based on presense of colorama

    Without colorama installed, the provided ColoredFormatter will always use colors, even when redirected to a file (ie. $ ./command.py 2> error_out.txt)

    When colorama is installed, colorama detects a non-tty, and strips the colors.

    Since colorlog provides a TTYColoredFormater that will strip colors for a non-tty, the above behavior seems not only inconsistent, but unintended. (ie. the user chooses stripping for non-tty by choosing TTYColoredFormater instead of ColoredFormatter, not by having or not having colorama installed.)

    I therefore suggest that the colorama init should be called as: colorama.init(strip=False) or minimally some other option should be available to colorlog users to 'force' colors or prevent stripping.

    I like my logs to have color even when redirected to files. Using 'less -R' let's you still benefit from the colors when reviewing the output.

    opened by proximous 8
  • Add support for per-loglevel formatting

    Add support for per-loglevel formatting

    This makes it possible to specify a formatter dictionary that enables colorlog to format messages differently based on their log level.

    Use case:

    • If you want to log informational output using logger.info(), you are rarely interested in the module and line number where the message comes from.
    • On the other hand, it can be useful to prefix warnings, errors and criticals with 'WARNING: ' etc. and add line number and module at the end, for example.

    This is why I added the level_fmts argument to ColoredFormatter.

    I tested the new code with Python 2.7 and Python 3.5.

    Possible issues:

    • default_level_formats has nothing to do with colorlog's normal default_formats. Could this be confusing?
    • We could reuse the fmt argument instead of introducing the new level_fmts. We would need to check if fmt is a dict or a string in ColoredFormatter.__init__() and could use it differently depending on the type. I don't know if that would be better. What is your opinion?
    opened by mdraw 8
  • Add all parameters to basicConfig

    Add all parameters to basicConfig

    Awesome package, very nicely done!

    I was wondering why the basicConfig only has the fmt and datefmt option instead of all the ColoredFormatter options since you directly use this class?

    I have added them like this and it seems to work fine. Perhaps I'm missing something in how to use the package but this way I can simply use the basicConfig without creating any new handlers etc. and still choose my own colors :+1:

    def basicConfig(**kwargs):
        """Call ``logging.basicConfig`` and override the formatter it creates."""
        logging.basicConfig(**kwargs)
        logging._acquireLock()
        try:
            stream = logging.root.handlers[0]
            stream.setFormatter(
                ColoredFormatter(
                    fmt=kwargs.get('format', BASIC_FORMAT),
                    datefmt=kwargs.get('datefmt', None),
                    style=kwargs.get('style', '%'),
                    log_colors=kwargs.get('log_colors', None),
                    reset=kwargs.get('reset', True),
                    secondary_log_colors=kwargs.get('secondary_log_colors', None)))
        finally:
            logging._releaseLock()
    
    opened by Michielskilian 7
  • Switch to deactivate color output

    Switch to deactivate color output

    There should be a switch to deactivate the color output. Most of the time for debug purpose.

    I use my code on Linux (bash) and Windwos10 (Thonny Pythton GUI). The latter is not able to handle the color codes and output all the escape characters. This is ugly.

    I just want to deactivate the color-escape sequences but not the other settings (e.g. format).

    opened by buhtz 7
  • Feature: Custom level

    Feature: Custom level

    Hi,

    If already supported, could you please detail how to set a custom logging level with an associated color and formatting? Otherwise that would be a nice addition!

    Thanks

    opened by aress31 7
  • Remove ColoredRecord class

    Remove ColoredRecord class

    This intends to solve a rare problem I had encountered. I use both colorlog and multiprocessing-logging. I noticed that in the subprocesses, if I call logger.exception, I do get the message but not the traceback. I tracked down the issue to this line, where multiprocessing-logging calls format(record), expecting the formatter to set record.exc_text. Since the ColoredFormatter wraps the record before calling the base class, the original record doesn't get it's exc_text set, and I lose my traceback. I think that this issue is much easier to fix in colorlog. I removed the ColoredRecord and instead just set the escape code properties to the original record.

    opened by noamkush 6
  • Logging is sometimes duplicated without color

    Logging is sometimes duplicated without color

    Asking here primarily to see if you know an obvious reason why this is happening:

    I'm sometimes getting a double logging output in my log:

    1-19 14:26:36 DEBUG    First dates from partial predictions: {'transfer_rates': datetime.date(2020, 10, 5), 'orders_day': datetime.date(2020, 10, 5), 'units_order': datetime.date(2020, 10, 5)}
    11-19 14:26:36 DEBUG    First date of joint prediction: 2020-10-05
    11-19 14:26:36 DEBUG    Days predicted in partial predictions fron joint first date: {'transfer_rates': 42, 'orders_day': 42, 'units_order': 42}
    11-19 14:26:36 DEBUG    Last date of joint prediction: 2020-11-15
    11-19 14:26:38 DEBUG    Using expected new [[ 850. 1200. 1200. 1200. 3000. 3000. 3000.]]
    11-19 14:26:38 DEBUG    Using expected winback [[2400. 2600. 2600. 2500. 3000. 3000. 3200.]]
    11-19 14:26:38 DEBUG    Added noise to expected new and winback
    11-19 14:26:38 DEBUG    Normalize ranges and draws on prediction for transfer_rates
    DEBUG:main:Normalize ranges and draws on prediction for transfer_rates
    11-19 14:26:38 DEBUG    Normalize ranges and draws on prediction for orders_day
    DEBUG:main:Normalize ranges and draws on prediction for orders_day
    11-19 14:26:38 DEBUG    Normalize ranges and draws on prediction for units_order
    DEBUG:main:Normalize ranges and draws on prediction for units_order
    11-19 14:26:38 INFO     Add adjustments
    INFO:main:Add adjustments
    

    image

    The white lines containing :main: are the lines I do not expect. Once these lines start appearing, the double logs appear with every single logging statement.

    We import a logger in our scripts that is defined as:

    def make_logger(console=True):
        logger = logging.getLogger(name)
        logger.setLevel(level)
    
        if console:
            color_fmt = "%(log_color)s" if use_color and console else ""
            # some additional unrelated code here, removed for clarity
       
            # set logger stream variable so color only in interactive
            # terminals AND notebooks, preventing ANSI escape signatures
            # in grayscale log files
            stream = None if is_in_ipython_session() else sys.stderr
    
            formatter = colorlog.ColoredFormatter(
                fmt=color_fmt + log_format_for_console,
                datefmt=time_format_for_console,
                log_colors={
                    "DEBUG": "blue",
                    "INFO": "green",
                    "WARNING": "yellow",
                    "ERROR": "red",
                    "CRITICAL": "bold_red,bg_white",
                },
                stream=stream,
            )
            if log_in_gmt:
                formatter.converter = time.gmtime
    
            handler = colorlog.StreamHandler()
            handler.setFormatter(formatter)
    
            logger.addHandler(handler)
    

    I've use this as logger = make_logger(), and then e.g. logger.debug(...). I've noticed that I can trigger the double line behaviour if I accidentally call logging.debug instead of logger.debug, but that is not the case in the above.

    Do you have any idea what's going on?

    opened by thomasaarholt 5
  • colorlog.LevelFormatter does not allow to use dict for fmt parameter on python 3.8

    colorlog.LevelFormatter does not allow to use dict for fmt parameter on python 3.8

    Traceback (most recent call last): File "D:/gitrep/DevOpsCI/DiasoftBuild/DiasoftBuild.py", line 36, in from LogInit import file_formatter File "D:\gitrep\DevOpsCI\DiasoftBuild\CommonLib\LogInit.py", line 98, in formatter = LevelFormatter( File "C:\Users\panov-ea\AppData\Roaming\Python\Python38\site-packages\colorlog\colorlog.py", line 160, in init super(LevelFormatter, self).init( File "C:\Users\panov-ea\AppData\Roaming\Python\Python38\site-packages\colorlog\colorlog.py", line 91, in init super(ColoredFormatter, self).init(fmt, datefmt, style) File "C:\Users\panov-ea\AppData\Local\Programs\Python\Python38-32\lib\logging_init_.py", line 576, in init self.style.validate() File "C:\Users\panov-ea\AppData\Local\Programs\Python\Python38-32\lib\logging_init.py", line 456, in validate for _, fieldname, spec, conversion in _str_formatter.parse(self._fmt): File "C:\Users\panov-ea\AppData\Local\Programs\Python\Python38-32\lib\string.py", line 261, in parse return _string.formatter_parser(format_string) TypeError: expected str, got dict

    opened by PanovEduard 5
  • Error with reset color and style

    Error with reset color and style "{" on Python 3.6

    Python 3.6.0a4 64-bit on Windows

    The following code produces an error with Python 3.6 but not Python 3.5:

    import logging, colorlog
    
    logger  = logging.getLogger()
    handler = logging.StreamHandler()
    
    handler.setFormatter(colorlog.ColoredFormatter(
        '{log_color}{levelname}:{reset} {message}', style = '{'))
    
    logging.getLogger().addHandler(handler)
    
    logger.error('TEST')
    
    --- Logging error ---
    Traceback (most recent call last):
      File "F:\PortableApps\Python3x\lib\logging\__init__.py", line 985, in emit
        msg = self.format(record)
      File "F:\PortableApps\Python3x\lib\logging\__init__.py", line 831, in format
        return fmt.format(record)
      File "F:\PortableApps\Python3x\lib\site-packages\colorlog\colorlog.py", line 129, in format
        message = super(ColoredFormatter, self).format(record)
      File "F:\PortableApps\Python3x\lib\logging\__init__.py", line 571, in format
        s = self.formatMessage(record)
      File "F:\PortableApps\Python3x\lib\logging\__init__.py", line 540, in formatMessage
        return self._style.format(record)
      File "F:\PortableApps\Python3x\lib\logging\__init__.py", line 392, in format
        return self._fmt.format(**record.__dict__)
    KeyError: 'reset'
    Call stack:
      File "test.py", line 11, in <module>
        logger.error('TEST')
    Message: 'TEST'
    Arguments: ()
    
    opened by thorstenkampe 5
  • Installing license file

    Installing license file

    It seems tarball from https://files.pythonhosted.org/packages/source/c/colorlog/colorlog-4.0.0.tar.gz does not install the LICENSE file by default. Could you change it so the license is installed during setup?

    opened by jubalh 4
  • Document `light_*` colors?

    Document `light_*` colors?

    I was trying to figure out how to get the bright colors that Pycharm terminal supports. Took my some time before I released there were undocumented colors, the light_* colors.

    I could adjust the documentation for you if you want to added the light_* colors to the README.md, or did you want to do that, or did you want to just leave it as-is?

    Figured I would open this up, as it would have saved me a bunch of time if they were in the list of colors.

    opened by joshorr 4
Releases(v6.6.0)
  • v6.6.0(Nov 8, 2021)

    https://pypi.org/project/colorlog/6.6.0/

    Changes

    Changes since v6.4.1.

    • Add a force_color option to colorlog.formatter.ColoredFormatter.
    • Support the FORCE_COLOR environment variable.
    Source code(tar.gz)
    Source code(zip)
  • v6.4.1(Aug 23, 2021)

    This is the first proper release in the v6 line!

    PyPI: https://pypi.org/project/colorlog/6.4.1/

    This breaks backwards compatibility in a few ways, most notably dropping support for Python versions older than 3.5. A warning will be displayed if you try to run it on an older version:

    Colorlog requires Python 3.6 or above.
    Pin 'colorlog<5' to your dependencies if you require compatibility with older versions of Python.
    

    This lets colorlog drop some code that was getting very messy to maintain, which made adding and testing new features a slog. Other backwards incompatible changes have mostly been to internals, and some long requested features that have been a bit easier to add now.

    Changes

    Changes since v6.3.0a1.

    • Renamed colorlog.logging to colorlog.wrappers.
    • Import log levels from the logging module (#111).

    Changelog

    Changes since v5.0.0.

    • Dropped support for Python 2 and Python versions below Python 3.5.
    • Added type hints and added mypy to CI (#83).
    • Support 256 colour ANSI codes (#88).
    • Support "light" ANSI codes (#87).
    • Support the NO_COLOR environment variable, and a no_color option (#70).
    • Updated various examples and documentation (#85).
    • Merged TTYColoredFormatter into ColoredFormatter, and ensure no ANSI codes are printed when colors are disabled.
    • Replaced LevelFormatter with a far simpler implementation.
    • Fixed version_info check for the Formatter validate parameter.
    • Define formatMessage instead of format, so that ColoredRecord is used in fewer places.
    • Use setuptool's "normalised" format for the version number.
    • Add PEP 561 typing marker so mypy can find type annotations.
    • Renamed internal modules.
      • colorlog.colorlog is now colorlog.formatter.
      • colorlog.logging is now colorlog.wrappers.
    • Removed colorlog.escape_codes object so that the colorlog.escape_codes module can be imported and used.
    • Import log levels from the logging module (#111).
    Source code(tar.gz)
    Source code(zip)
  • v6.3.0a1(Jun 14, 2021)

    • Rename internal modules. colorlog.colorlog is now colorlog.formatter.
    • Remove colorlog.escape_codes object so that the colorlog.escape_codes module can be imported and used.
    Source code(tar.gz)
    Source code(zip)
  • v6.2.0a1(Jun 14, 2021)

  • v6.1.0a1(Jun 14, 2021)

  • v6.0.0-alpha.2(Apr 13, 2021)

    • Dropped support for Python 2 and Python versions below Python 3.5.
    • Added type hints and added mypy to CI (#83).
    • Support 256 colour ANSI codes (#88).
    • Support "light" ANSI codes (#87).
    • Support the NO_COLOR environment variable, and a no_color option (#70).
    • Updates various examples and documenation (#85).
    • Merged TTYColoredFormatter into ColoredFormatter, and ensure no ANSI codes are printed when colors are disabled.
    • Replaced LevelFormatter with a far simpler implementation.
    • Fixed version_info check for the Formatter validate parameter.
    • Define formatMessage instead of format, so that ColoredRecord is used in fewer places.
    Source code(tar.gz)
    Source code(zip)
  • v5.0.0(Apr 13, 2021)

    This prepares for a v6.0.0 version that breaks backwards compatibility with older Python versions and potentially changes various internals.

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0(Dec 14, 2018)

    Breaking change: TTYColoredFormatter requires the stream argument, avoiding checking the wrong stream and still displaying colors when it shouldn't.

    Includes some other minor changes, and attempts to close the last few months worth of minor issues (#54, #62, #64, #65).

    Source code(tar.gz)
    Source code(zip)
  • v3.1.0(Jul 28, 2017)

    This removed the use of parse_colors directly in format strings, as it relied on an implementation specific detail of Python 2 and was broken on Python 3 (i.e. setting __missing__ on an object's __dict__). It also adds some usage examples.

    Source code(tar.gz)
    Source code(zip)
  • 2.7.0(May 24, 2016)

  • v2.4.0(Aug 6, 2014)

  • v2.3.1(Jun 12, 2014)

  • v2.1.0(Feb 20, 2014)

    Adds module level functions that log to the root logger, and sets up a basic coloured logger when those modules are called and no handlers exist (in the same way the logging module does).

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Sep 6, 2013)

Owner
Sam Clements
Open Sourcerer
Sam Clements
Beautifully colored, quick and simple Python logging

Python Quick Logging | QLogging Beautifully colored, quick and simple Python logging. This logger is based on Python logging package Screenshots: Term

null 45 Sep 25, 2022
Json Formatter for the standard python logger

Overview This library is provided to allow standard python logging to output log data as json objects. With JSON we can make our logs more readable by

Zakaria Zajac 1.4k Jan 4, 2023
Json Formatter for the standard python logger

This library is provided to allow standard python logging to output log data as json objects. With JSON we can make our logs more readable by machines and we can stop writing custom parsers for syslog type records.

Zakaria Zajac 1k Jul 14, 2021
Python logging made (stupidly) simple

Loguru is a library which aims to bring enjoyable logging in Python. Did you ever feel lazy about configuring a logger and used print() instead?... I

null 13.7k Jan 2, 2023
Structured Logging for Python

structlog makes logging in Python faster, less painful, and more powerful by adding structure to your log entries. It's up to you whether you want str

Hynek Schlawack 2.3k Jan 5, 2023
A cool logging replacement for Python.

Welcome to Logbook Travis AppVeyor Supported Versions Latest Version Test Coverage Logbook is a nice logging replacement. It should be easy to setup,

null 1.4k Nov 11, 2022
Robust and effective logging for Python 2 and 3.

Robust and effective logging for Python 2 and 3.

Chris Hager 1k Jan 4, 2023
Python logging package for easy reproducible experimenting in research

smilelogging Python logging package for easy reproducible experimenting in research. Why you may need this package This project is meant to provide an

Huan Wang 20 Dec 23, 2022
A basic logging library for Python.

log.py ?? About: A basic logging library for Python with the capability to: save to files. have custom formats. have custom levels. be used instantiat

Sebastiaan Bij 1 Jan 19, 2022
Small toolkit for python multiprocessing logging to file

Small Toolkit for Python Multiprocessing Logging This is a small toolkit for solving unsafe python mutliprocess logging (file logging and rotation) In

Qishuai 1 Nov 10, 2021
A lightweight logging library for python applications

cakelog a lightweight logging library for python applications This is a very small logging library to make logging in python easy and simple. config o

null 2 Jan 5, 2022
Simple and versatile logging library for python 3.6 above

Simple and versatile logging library for python 3.6 above

Miguel 1 Nov 23, 2022
A Python package which supports global logfmt formatted logging.

Python Logfmter A Python package which supports global logfmt formatted logging. Install $ pip install logfmter Usage Before integrating this library,

Joshua Taylor Eppinette 15 Dec 29, 2022
Stand-alone parser for User Access Logging from Server 2012 and newer systems

KStrike Stand-alone parser for User Access Logging from Server 2012 and newer systems BriMor Labs KStrike This script will parse data from the User Ac

BriMor Labs 69 Nov 1, 2022
Logging system for the TPC software.

tpc_logger Logging system for the TPC software. The TPC Logger class provides a singleton for logging information within C++ code or in the python API

UC Davis Machine Learning 1 Jan 10, 2022
Outlog it's a library to make logging a simple task

outlog Outlog it's a library to make logging a simple task!. I'm a lazy python user, the times that i do logging on my apps it's hard to do, a lot of

ZSendokame 2 Mar 5, 2022
metovlogs is a very simple logging library

metovlogs is a very simple logging library. Setup is one line, then you can use it as a drop-in print replacement. Sane and useful log format out of the box. Best for small or early projects.

Azat Akhmetov 1 Mar 1, 2022
Pretty-print tabular data in Python, a library and a command-line utility. Repository migrated from bitbucket.org/astanin/python-tabulate.

python-tabulate Pretty-print tabular data in Python, a library and a command-line utility. The main use cases of the library are: printing small table

Sergey Astanin 1.5k Jan 6, 2023
Progressbar 2 - A progress bar for Python 2 and Python 3 - "pip install progressbar2"

Text progress bar library for Python. Travis status: Coverage: Install The package can be installed through pip (this is the recommended method): pip

Rick van Hattem 795 Dec 18, 2022