Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Autologging - easier logging and tracing for Python classes

PyPI version Python version Python implementation License Wheel availability


Autologging eliminates boilerplate logging setup code and tracing code, and provides a means to separate application logging from program flow and data tracing.

Python modules that make use of Autologging are cleaner, leaner, and more resilient to changes that would otherwise require updating tracing statements.

Autologging allows for tracing to be configured (and controlled) independently from application logging. Toggle tracing on/off, write trace log records to a separate log, and use different formatting for trace log entries - all via standard Python logging facilities, and without affecting your application logging.

What's in the autologging namespace?

Autologging exposes two decorators and a custom log level:

logged Decorate a class to create a __log member. The logger is named by default to match the dotted-name of the containing class. A function may also be decorated, creating a _log attribute on the function object whose default name matches the containing module. A specifically-named logger may also be passed to the decorator (i.e. logged(my_logger)).

traced Decorate a class to provide automatic method call/return tracing. By default, all class, static, and instance methods are traced (excluding "special" methods, with the exception of __init__ and __call__). As with the logged decorator, the default name of the tracing logger matches the dotted-name of the containing class and may be overridden by passing a specifically-named logger to the decorator. Additionally, this decorator accepts multiple string arguments that explicitly name the methods to be traced (and may even name "special" methods).

Module-level functions may also be traced using this decorator.

New in version 1.2.0: automatic yield/stop tracing of Python generator iterators (if the generator function is traced).

TRACE The autologging.TRACE (level 1) log level is registered with the Python logging module when Autologging is imported so that tracing can be configured and controlled independently of application logging.

Tracing may be disabled entirely by setting the AUTOLOGGING_TRACED_NOOP environment variable or by calling the autologging.install_traced_noop() function.

A brief example

A simple logged and traced class:

 1 import logging
 2 import sys
 4 from autologging import logged, TRACE, traced
 6 @traced
 7 @logged
 8 class Example:
10     def __init__(self):
13     def backwards(self, *words):
14         for word in words:
15             yield "".join(reversed(word))
18 if __name__ == "__main__":
19     logging.basicConfig(
20             level=TRACE, stream=sys.stderr,
21             format="%(levelname)s:%(filename)s,%(lineno)d:%(name)s.%(funcName)s:%(message)s")
22     example = Example()
23     for result in example.backwards("spam", "eggs"):
24         print(result)

Logging and tracing output:

$ python,10:__main__.Example.__init__:CALL *() **{},11:__main__.Example.__init__:initialized,11:__main__.Example.__init__:RETURN None,13:__main__.Example.backwards:CALL *('spam', 'eggs') **{},15:__main__.Example.backwards:RETURN <generator object backwards at 0x7fa534d61eb0>,15:__main__.Example.backwards:YIELD 'maps'
maps,15:__main__.Example.backwards:YIELD 'sgge'


The easiest way to install Autologging is to use pip:

$ pip install Autologging

Source installation

Clone or fork the repository:

$ git clone

Alternatively, download and extract a source .zip or .tar.gz archive from, or

Run the test suite and install the autologging module: (make sure you have setuptools installed!)

$ cd Autologging
$ python test
$ python install

Binary installation

Download the Python wheel (.whl) or a Windows installer from or

(Use pip or wheel to install the .whl.)


Autologging automates logging setup and method tracing for Python classes.







No packages published

Contributors 4