Skip to main content

Extra Logging Functionality

Project description

# pyLoggingExtras
Extra logging functionality for Python

####NoneLogger

NoneLogger is a logger class that implements logging.Logger interface
but provides no functionality (Null object design pattern), allowing you
to use that as a default logger and forgo the need to check if logger is
an actual instance before using it to log things.

**Example:**
*without NoneLogger*
```python
def method_that_logs_if_possible(arg1, arg2, logger=None)
#TODO code here
if logger:
logger.info("ran code up to here")
#TODO more code here
if logger:
logger.debug("values here are so and so")

```

*with NoneLogger*
```python
from loggingextras import NoneLogger

def method_that_logs_if_possible(arg1, arg2, logger=NoneLogger())
#TODO code here
logger.info("ran code up to here")
#TODO more code here
logger.debug("values here are so and so")

```

####API Logging

apilog is a set of logging decorators that will log entry and exit events
in and out of methods.

apilog decorators will log entry events and input arguments to methods, as
well as exit values and exceptions raised within methods

apilog decorators are availale for different logging levels

apilog decorators take advantage of a class's logger property if one
exists and follows logging.Logger interface. otherwise uses stdout prints

apilog decorators are available for the following logging levels:
```python
apilog_finest
apilog_finer
apilog_fine
apilog_debug
apilog_info
apilog_warning
apilog_error
apilog_critical
```

**Example usage module level methods:**
```python
from loggingextras.apilog import apilog_debug, apilog_info

@apilog_debug
def method_debug_output(param_a=None):
print 'params:', param_a
return param_a


if __name__ == "__main__":
method_debug_output(dict(k1=1, k2=2))
```

*Sample output:*
```
DEBUG:apilog:entering method_debug_output with wargs=[{"k2": 2, "k1": 1}], kwargs={}
params: {'k2': 2, 'k1': 1}
DEBUG:apilog:exiting method_debug_output with {"k2": 2, "k1": 1} in [0:00:00.000107]
```

**Example usage using class methods with a class logger availble:**
```python
from loggingextras.apilog import apilog_debug

class decorated_class_with_logger(object):

def __init__(self):
basicConfig(level=1, stream=sys.stdout)
self.logger = getLogger('decorated_class')

@apilog_debug
def method_a(self, param_a=None, param_b=None, param_c=None):
self.logger.info('params:', param_a, param_b, param_c)
assert param_b != "exception", 'failed something'


if __name__ == "__main__":
obj = decorated_class_with_logger()
obj.method_a(param_b='something')

```

*Sample output:*
```
DEBUG: decorated_class: entering method_a with wargs=[], kwargs={"param_b": "something"}
INFO : decorated_class: params: None something None
DEBUG: decorated_class: exiting method_a with null in [0:00:00.000090]

```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

loggingextras-1.0.tar.gz (30.8 kB view details)

Uploaded Source

File details

Details for the file loggingextras-1.0.tar.gz.

File metadata

  • Download URL: loggingextras-1.0.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for loggingextras-1.0.tar.gz
Algorithm Hash digest
SHA256 4ceb643ea2460fd5b732f50c5923859992c4f335a76776895677df053fbad3ea
MD5 8e003df3f2605b55f08ae537e7c47ac1
BLAKE2b-256 f7b95524c705b7b458bdfe12e09aa97a2c97682ed8eb67721e37828a5caff49e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page