The More Module¶
The more module implements special handlers and other things that are
beyond the scope of Logbook itself or depend on external libraries.
Additionally there are some handlers in logbook.ticketing
,
logbook.queues
and logbook.notifiers
.
Tagged Logging¶
- class logbook.more.TaggingLogger(name=None, tags=None)¶
A logger that attaches a tag to each record. This is an alternative record dispatcher that does not use levels but tags to keep log records apart. It is constructed with a descriptive name and at least one tag. The tags are up for you to define:
logger = TaggingLogger('My Logger', ['info', 'warning'])
For each tag defined that way, a method appears on the logger with that name:
logger.info('This is a info message')
To dispatch to different handlers based on tags you can use the
TaggingHandler
.The tags themselves are stored as list named
'tags'
in theextra
dictionary.- call_handlers(record)¶
Pass a record to all relevant handlers in the following order:
per-dispatcher handlers are handled first
afterwards all the current context handlers in the order they were pushed
Before the first handler is invoked, the record is processed (
process_record()
).
- group¶
optionally the name of the group this logger belongs to
- handle(record)¶
Call the handlers for the specified record. This is invoked automatically when a record should be handled. The default implementation checks if the dispatcher is disabled and if the record level is greater than the level of the record dispatcher. In that case it will call the handlers (
call_handlers()
).
- handlers¶
list of handlers specific for this record dispatcher
- level¶
the level of the record dispatcher as integer
- make_record_and_handle(level, msg, args, kwargs, exc_info, extra, frame_correction)¶
Creates a record from some given arguments and heads it over to the handling system.
- name¶
the name of the record dispatcher
- process_record(record)¶
Processes the record with all context specific processors. This can be overriden to also inject additional information as necessary that can be provided by this record dispatcher.
- suppress_dispatcher = False¶
If this is set to True the dispatcher information will be suppressed for log records emitted from this logger.
- class logbook.more.TaggingHandler(handlers, filter=None, bubble=False)¶
A handler that logs for tags and dispatches based on those.
Example:
import logbook from logbook.more import TaggingHandler handler = TaggingHandler(dict( info=OneHandler(), warning=AnotherHandler() ))
- emit(record)¶
Emit the specified logging record. This should take the record and deliver it to whereever the handler sends formatted log records.
Special Handlers¶
- class logbook.more.TwitterHandler(consumer_key, consumer_secret, username, password, level=0, format_string=None, filter=None, bubble=False)¶
A handler that logs to twitter. Requires that you sign up an application on twitter and request xauth support. Furthermore the oauth2 library has to be installed.
If you don’t want to register your own application and request xauth credentials, there are a couple of leaked consumer key and secret pairs from application explicitly whitelisted at Twitter (leaked secrets).
- default_format_string = '[{record.channel}] {record.level_name}: {record.message}'¶
a class attribute for the default format string to use if the constructor was invoked with None.
- emit(record)¶
Emit the specified logging record. This should take the record and deliver it to whereever the handler sends formatted log records.
- formatter_class¶
alias of
TwitterFormatter
- get_oauth_token()¶
Returns the oauth access token.
- make_client()¶
Creates a new oauth client auth a new access token.
- tweet(status)¶
Tweets a given status. Status must not exceed 140 chars.
- class logbook.more.SlackHandler(api_token, channel, level=0, format_string=None, filter=None, bubble=False)¶
A handler that logs to slack. Requires that you sign up an application on slack and request an api token. Furthermore the slacker library has to be installed.
- emit(record)¶
Emit the specified logging record. This should take the record and deliver it to whereever the handler sends formatted log records.
- class logbook.more.ExternalApplicationHandler(arguments, stdin_format=None, encoding='utf-8', level=0, filter=None, bubble=False)¶
This handler invokes an external application to send parts of the log record to. The constructor takes a list of arguments that are passed to another application where each of the arguments is a format string, and optionally a format string for data that is passed to stdin.
For example it can be used to invoke the
say
command on OS X:from logbook.more import ExternalApplicationHandler say_handler = ExternalApplicationHandler(['say', '{record.message}'])
Note that the above example is blocking until
say
finished, so it’s recommended to combine this handler with thelogbook.ThreadedWrapperHandler
to move the execution into a background thread.New in version 0.3.
- emit(record)¶
Emit the specified logging record. This should take the record and deliver it to whereever the handler sends formatted log records.
- class logbook.more.ExceptionHandler(exc_type, level=0, format_string=None, filter=None, bubble=False)¶
An exception handler which raises exceptions of the given exc_type. This is especially useful if you set a specific error level e.g. to treat warnings as exceptions:
from logbook.more import ExceptionHandler class ApplicationWarning(Exception): pass exc_handler = ExceptionHandler(ApplicationWarning, level='WARNING')
New in version 0.3.
- handle(record)¶
Emits the record and falls back. It tries to
emit()
the record and if that fails, it will call intohandle_error()
with the record and traceback. This function itself will always emit when called, even if the logger level is higher than the record’s level.If this method returns False it signals to the calling function that no recording took place in which case it will automatically bubble. This should not be used to signal error situations. The default implementation always returns True.
- class logbook.more.DedupHandler(format_string='message repeated {count} times: {message}', *args, **kwargs)¶
A handler that deduplicates log messages.
It emits each unique log record once, along with the number of times it was emitted. Example::
with logbook.more.DedupHandler(): logbook.error('foo') logbook.error('bar') logbook.error('foo')
The expected output::
message repeated 2 times: foo message repeated 1 times: bar
- handle(record)¶
Emits the record and falls back. It tries to
emit()
the record and if that fails, it will call intohandle_error()
with the record and traceback. This function itself will always emit when called, even if the logger level is higher than the record’s level.If this method returns False it signals to the calling function that no recording took place in which case it will automatically bubble. This should not be used to signal error situations. The default implementation always returns True.
- pop_application()¶
Pops the context object from the stack.
- pop_context()¶
Pops the context object from the stack.
- pop_greenlet()¶
Pops the context object from the stack.
- pop_thread()¶
Pops the context object from the stack.
Colorized Handlers¶
New in version 0.3.
- class logbook.more.ColorizedStderrHandler(*args, **kwargs)¶
A colorizing stream handler that writes to stderr. It will only colorize if a terminal was detected. Note that this handler does not colorize on Windows systems.
New in version 0.3.
Changed in version 1.0: Added Windows support if colorama is installed.
- class logbook.more.ColorizingStreamHandlerMixin¶
A mixin class that does colorizing.
New in version 0.3.
Changed in version 1.0.0: Added Windows support if colorama is installed.
- forbid_color()¶
Forbid colorizing the stream (should_colorize will return False)
- force_color()¶
Force colorizing the stream (should_colorize will return True)
- get_color(record)¶
Returns the color for this record.
- should_colorize(record)¶
Returns True if colorizing should be applied to this record. The default implementation returns True if the stream is a tty. If we are executing on Windows, colorama must be installed.
Other¶
- class logbook.more.JinjaFormatter(template)¶
A formatter object that makes it easy to format using a Jinja 2 template instead of a format string.