Pyjo.Log - Simple logger

import Pyjo.Log

# Log to STDERR
log = Pyjo.Log.new()

# Customize log file location and minimum log level
log = Pyjo.Log.new(path='/var/log/pyjo.log', level='warn')

# Log messages
log.debug('Not sure what is happening here')
log.info('FYI: it happened again')
log.warn('This might be a problem')
log.error('Garden variety error')
log.fatal('Boom')

Pyjo.Log is a simple logger for Pyjo projects.

Events

Pyjo.Log inherits all events from Pyjo.EventEmitter and can emit the following new ones.

message

@log.on
def message(log, level, lines):
   ...

Emitted when a new message gets logged.

log.unsubscribe('message')

@log.on
def message(log, level, lines):
    print("{0}: {1}".format(level, "\n".join(lines)))

Classes

class Pyjo.Log.Pyjo_Log(**kwargs)

Pyjo.Log inherits all attributes and methods from Pyjo.EventEmitter and implements the following new ones.

append(msg)
log.append(u"[Thu May 15 17:47:04 2014] [info] I ♥ Pyjoyment\n")

Append message to handle.

debug(*lines)
log = log.debug('You screwed up, but that is ok')
log = log.debug('All', 'cool')

Emit message event and log debug message.

error(*lines)
log = log.error('You really screwed up this time')
log = log.error('Wow', 'seriously')

Emit message event and log error message.

fatal(*lines)
log = log.fatal('Its over...')
log = log.fatal('Bye', 'bye')

Emit message event and log fatal message.

format = None
cb = log.format
log.format = lambda t, level, *lines: ...

A callback for formatting log messages.

def my_format(t, level, *lines):
    return u"[Thu May 15 17:47:04 2014] [info] I ♥ Mojolicious\n"

log.format = my_format
handle = None
handle = log.handle
log.handle = open('file.log', 'a')

Log filehandle used by default message event, defaults to opening path or sys.stderr. Filehandle should accept unicode. If sys.stderr is not in utf-8 mode, then this stream is re-attached to accept unicode.

history = None
history = log.history
log.history = [[time.time(), 'debug', 'That went wrong']]

The last few logged messages.

info(*lines)
log = log.info('You are bad, but you prolly know already')
log = log.info('Ok', 'then')

Emit message event and log info message.

is_debug
boolean = log.is_debug

Check for debug log level.

is_error
boolean = log.is_error

Check for error log level.

is_info
boolean = log.is_info

Check for info log level.

is_warn
boolean = log.is_warn

Check for warn log level.

level = None
level = log.level
log.level = 'debug'

Active log level, defaults to debug. Available log levels are debug, info, warn, error and fatal, in that order. Note that the PYJO_LOG_LEVEL environment variable can override this value.

max_history_size = None
size = log.max_history_size
log.max_history_size = 5

Maximum number of logged messages to store in history, defaults to 10.

path = None
path = log.path
log.path = '/var/log/pyjo.log'

Log file path used by handle.

warn(*lines)
log = log.warn('Dont do that Dave...')
log = log.warn('No', 'really')

Emit message event and log warn message.

Pyjo.Log.object

alias of Pyjo_Log