alogging 0.6.2
A collection of logging utilities
License: MIT license
Keywords: alogging

========
alogging
========


.. image:: https://img.shields.io/pypi/v/alogging.svg
        :target: https://pypi.python.org/pypi/alogging

.. image:: https://img.shields.io/travis/alikins/alogging.svg
        :target: https://travis-ci.org/alikins/alogging

.. image:: https://readthedocs.org/projects/alogging/badge/?version=latest
        :target: https://alogging.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

.. image:: https://pyup.io/repos/github/alikins/alogging/shield.svg
        :target: https://pyup.io/repos/github/alikins/alogging/
        :alt: Updates

.. image:: https://github.com/alikins/alogging/workflows/Python%20package/badge.svg
        :target: https://github.com/alikins/alogging/actions?query=workflow%3A%22Python+package%22
        :alt: Python package github action

Python logging tools and utils.


Usage
-----

To use alogging in a project::

    import alogging

Examples
--------

Basic use of alogging::

    import alogging

    # create a logging.Logger object, will use the __name__ of the
    # module by default. Equilivent to 'log = logging.getLogger(__name__)'
    log = alogging.get_logger()

    log.debug('created a Logger object so use it for a debug msg')

    if __name__ = '__main__':
        main_log = alogging.app_setup(name='example.main')
        main_log.debug('started main')

More advanced::

    import alogging

    # local alias for alogging.a()
    a = alogging.a

    log = alogging.get_logger()

    class ThingToDo(object):
        def __init__(self, requirement, priority=None, assigner=None):
            # get a Logger named 'example.ThingToDo'
            self.log = alogging.get_class_logger(self)

            self.log.info('Task as assigned: req=%s, pri=%s, ass=%s', requirement, priority, assigner)

            priority = priority or 'never'

            self.log.info('Task reprioritized: req=%s, pri=%s, ass=%s', requirement, priority, assigner')


    # alogging.t decorator will log when the decorated method is called,
    # what args it was passed, and what it's return value was

    @alogging.t
    def space_out_for_while(duration=None):
        # space out for 10 minutes by default
        duration = duration or 600

        # return the total amount of work accomplished
        return 0

    def find_coffee(coffee_places):
        log.debug('looking for coffee')
        return None

    def do_startup_stuff():
        coffee_places = ['piehole', 'mug_on_desk', 'coffee_machine', 'krankies']
        # log the the args to find_coffee as it is called
        has_coffee = a(find_coffee(coffee_places))

        work_accomplished = space_out_for_while(duration=300)

    def do_work():
        next_task = TaskToDo('finish TODO list', assigner='Lumberg')
        if not next_task:
            return

        # oh no, work...
        log.error("I'm slammed at the moment, I can't do %s', next_task)
        raise Exception()

    if __name__ = '__main__':
        # use some reasonable defaults for setting up logging.
        # - log to stderr
        # - use a default format:
        #   """%(asctime)s,%(msecs)03d %(levelname)-0.1s %(name)s %(processName)s:%(process)d %(funcName)s:%(lineno)d - %(message)s"""
        main_log = alogging.app_setup(name='example.main')
        main_log.debug('Log to logging "example.main"')

        do_startup_stuff()

        try:
            do_work()
        except Exception as exc:
            # gruntle a bit and continue
            log.exception(exc)

        return 0


License
-------

* Free software: MIT license


Features
--------

* TODO

Authors
-------

* Adrian Likins