You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
Metadata-Version: 2.1Name: coloredlogsVersion: 15.0.1Summary: Colored terminal output for Python's logging moduleHome-page: https://coloredlogs.readthedocs.ioAuthor: Peter OddingAuthor-email: peter@peterodding.comLicense: MITPlatform: UNKNOWNClassifier: Development Status :: 5 - Production/StableClassifier: Environment :: ConsoleClassifier: Intended Audience :: DevelopersClassifier: Intended Audience :: Information TechnologyClassifier: Intended Audience :: System AdministratorsClassifier: License :: OSI Approved :: MIT LicenseClassifier: Operating System :: MacOSClassifier: Operating System :: Microsoft :: WindowsClassifier: Operating System :: POSIXClassifier: Operating System :: UnixClassifier: Programming Language :: PythonClassifier: Programming Language :: Python :: 2Classifier: Programming Language :: Python :: 2.7Classifier: Programming Language :: Python :: 3Classifier: Programming Language :: Python :: 3.5Classifier: Programming Language :: Python :: 3.6Classifier: Programming Language :: Python :: 3.7Classifier: Programming Language :: Python :: 3.8Classifier: Programming Language :: Python :: Implementation :: CPythonClassifier: Programming Language :: Python :: Implementation :: PyPyClassifier: Topic :: CommunicationsClassifier: Topic :: Scientific/Engineering :: Human Machine InterfacesClassifier: Topic :: Software DevelopmentClassifier: Topic :: Software Development :: Libraries :: Python ModulesClassifier: Topic :: Software Development :: User InterfacesClassifier: Topic :: SystemClassifier: Topic :: System :: ShellsClassifier: Topic :: System :: System ShellsClassifier: Topic :: System :: Console FontsClassifier: Topic :: System :: LoggingClassifier: Topic :: System :: Systems AdministrationClassifier: Topic :: TerminalsClassifier: Topic :: UtilitiesRequires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*Requires-Dist: humanfriendly (>=9.1)Provides-Extra: cronRequires-Dist: capturer (>=2.4) ; extra == 'cron'
coloredlogs: Colored terminal output for Python's logging module================================================================
.. image:: https://travis-ci.org/xolox/python-coloredlogs.svg?branch=master :target: https://travis-ci.org/xolox/python-coloredlogs
.. image:: https://coveralls.io/repos/github/xolox/python-coloredlogs/badge.svg?branch=master :target: https://coveralls.io/github/xolox/python-coloredlogs?branch=master
The `coloredlogs` package enables colored terminal output for Python's logging_module. The ColoredFormatter_ class inherits from `logging.Formatter`_ and uses`ANSI escape sequences`_ to render your logging messages in color. It uses onlystandard colors so it should work on any UNIX terminal. It's currently testedon Python 2.7, 3.5+ and PyPy (2 and 3). On Windows `coloredlogs` automaticallytries to enable native ANSI support (on up-to-date Windows 10 installations)and falls back on using colorama_ (if installed). Here is a screen shot of thedemo that is printed when the command ``coloredlogs --demo`` is executed:
.. image:: https://coloredlogs.readthedocs.io/en/latest/_images/defaults.png
Note that the screenshot above includes custom logging levels defined by myverboselogs_ package: if you install both `coloredlogs` and `verboselogs` itwill Just Work (`verboselogs` is of course not required to use`coloredlogs`).
.. contents:: :local:
Installation------------
The `coloredlogs` package is available on PyPI_ which means installation shouldbe as simple as:
.. code-block:: console
$ pip install coloredlogs
There's actually a multitude of ways to install Python packages (e.g. the `peruser site-packages directory`_, `virtual environments`_ or just installingsystem wide) and I have no intention of getting into that discussion here, soif this intimidates you then read up on your options before returning to theseinstructions 😉.
Optional dependencies~~~~~~~~~~~~~~~~~~~~~
Native ANSI support on Windows requires an up-to-date Windows 10 installation.If this is not working for you then consider installing the colorama_ package:
.. code-block:: console
$ pip install colorama
Once colorama_ is installed it will be used automatically.
Usage-----
Here's an example of how easy it is to get started:
.. code-block:: python
import coloredlogs, logging
# Create a logger object. logger = logging.getLogger(__name__)
# By default the install() function installs a handler on the root logger, # this means that log messages from your code and log messages from the # libraries that you use will all show up on the terminal. coloredlogs.install(level='DEBUG')
# If you don't want to see log messages from libraries, you can pass a # specific logger object to the install() function. In this case only log # messages originating from that logger will show up on the terminal. coloredlogs.install(level='DEBUG', logger=logger)
# Some examples. logger.debug("this is a debugging message") logger.info("this is an informational message") logger.warning("this is a warning message") logger.error("this is an error message") logger.critical("this is a critical message")
Format of log messages----------------------
The ColoredFormatter_ class supports user defined log formats so you can useany log format you like. The default log format is as follows::
%(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s
This log format results in the following output::
2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug' 2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose' 2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info' ...
You can customize the log format and styling using environment variables aswell as programmatically, please refer to the `online documentation`_ fordetails.
Enabling millisecond precision~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you're switching from `logging.basicConfig()`_ to `coloredlogs.install()`_you may notice that timestamps no longer include milliseconds. This is becausecoloredlogs doesn't output milliseconds in timestamps unless you explicitlytell it to. There are three ways to do that:
1. The easy way is to pass the `milliseconds` argument to `coloredlogs.install()`_::
coloredlogs.install(milliseconds=True)
This became supported in `release 7.1`_ (due to `#16`_).
2. Alternatively you can change the log format `to include 'msecs'`_::
%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s
Here's what the call to `coloredlogs.install()`_ would then look like::
coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s')
Customizing the log format also enables you to change the delimiter that separates seconds from milliseconds (the comma above). This became possible in `release 3.0`_ which added support for user defined log formats.
3. If the use of ``%(msecs)d`` isn't flexible enough you can instead add ``%f`` to the date/time format, it will be replaced by the value of ``%(msecs)03d``. Support for the ``%f`` directive was added to `release 9.3`_ (due to `#45`_).
Custom logging fields~~~~~~~~~~~~~~~~~~~~~
The following custom log format fields are supported:
- ``%(hostname)s`` provides the hostname of the local system.- ``%(programname)s`` provides the name of the currently running program.- ``%(username)s`` provides the username of the currently logged in user.
When `coloredlogs.install()`_ detects that any of these fields are used in theformat string the applicable logging.Filter_ subclasses are automaticallyregistered to populate the relevant log record fields.
Changing text styles and colors-------------------------------
The online documentation contains `an example of customizing the text styles andcolors <https://coloredlogs.readthedocs.io/en/latest/api.html#changing-the-colors-styles>`_.
Colored output from cron------------------------
When `coloredlogs` is used in a cron_ job, the output that's e-mailed to you bycron won't contain any ANSI escape sequences because `coloredlogs` realizesthat it's not attached to an interactive terminal. If you'd like to have colorse-mailed to you by cron there are two ways to make it happen:
.. contents:: :local:
Modifying your crontab~~~~~~~~~~~~~~~~~~~~~~
Here's an example of a minimal crontab::
MAILTO="your-email-address@here" CONTENT_TYPE="text/html" * * * * * root coloredlogs --to-html your-command
The ``coloredlogs`` program is installed when you install the `coloredlogs`Python package. When you execute ``coloredlogs --to-html your-command`` it runs``your-command`` under the external program ``script`` (you need to have thisinstalled). This makes ``your-command`` think that it's attached to aninteractive terminal which means it will output ANSI escape sequences whichwill then be converted to HTML by the ``coloredlogs`` program. Yes, this is abit convoluted, but it works great :-)
Modifying your Python code~~~~~~~~~~~~~~~~~~~~~~~~~~
The ColoredCronMailer_ class provides a context manager that automaticallyenables HTML output when the ``$CONTENT_TYPE`` variable has been correctly setin the crontab.
This requires my capturer_ package which you can install using ``pip install'coloredlogs[cron]'``. The ``[cron]`` extra will pull in capturer_ 2.4 or newerwhich is required to capture the output while silencing it - otherwise you'dget duplicate output in the emails sent by ``cron``.
The context manager can also be used to retroactively silence output that hasalready been produced, this can be useful to avoid spammy cron jobs that havenothing useful to do but still email their output to the system administratorevery few minutes :-).
Contact-------
The latest version of `coloredlogs` is available on PyPI_ and GitHub_. The`online documentation`_ is available on Read The Docs and includes achangelog_. For bug reports please create an issue on GitHub_. If you havequestions, suggestions, etc. feel free to send me an e-mail at`peter@peterodding.com`_.
License-------
This software is licensed under the `MIT license`_.
© 2020 Peter Odding.
.. External references:.. _#16: https://github.com/xolox/python-coloredlogs/issues/16.. _#45: https://github.com/xolox/python-coloredlogs/issues/45.. _ANSI escape sequences: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors.. _capturer: https://pypi.org/project/capturer.. _changelog: https://coloredlogs.readthedocs.org/en/latest/changelog.html.. _colorama: https://pypi.org/project/colorama.. _ColoredCronMailer: https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.converter.ColoredCronMailer.. _ColoredFormatter: https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.ColoredFormatter.. _coloredlogs.install(): https://coloredlogs.readthedocs.io/en/latest/api.html#coloredlogs.install.. _cron: https://en.wikipedia.org/wiki/Cron.. _GitHub: https://github.com/xolox/python-coloredlogs.. _logging.basicConfig(): https://docs.python.org/2/library/logging.html#logging.basicConfig.. _logging.Filter: https://docs.python.org/3/library/logging.html#filter-objects.. _logging.Formatter: https://docs.python.org/2/library/logging.html#logging.Formatter.. _logging: https://docs.python.org/2/library/logging.html.. _MIT license: https://en.wikipedia.org/wiki/MIT_License.. _online documentation: https://coloredlogs.readthedocs.io/.. _per user site-packages directory: https://www.python.org/dev/peps/pep-0370/.. _peter@peterodding.com: peter@peterodding.com.. _PyPI: https://pypi.org/project/coloredlogs.. _release 3.0: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-3-0-2015-10-23.. _release 7.1: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-7-1-2017-07-15.. _release 9.3: https://coloredlogs.readthedocs.io/en/latest/changelog.html#release-9-3-2018-04-29.. _to include 'msecs': https://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format.. _verboselogs: https://pypi.org/project/verboselogs.. _virtual environments: http://docs.python-guide.org/en/latest/dev/virtualenvs/
|