mozilla

Source code for heka.filters

# ***** BEGIN LICENSE BLOCK *****
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
#
# The Initial Developer of the Original Code is the Mozilla Foundation.
# Portions created by the Initial Developer are Copyright (C) 2012
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#   Rob Miller (rmiller@mozilla.com)
#
# ***** END LICENSE BLOCK *****
"""Callables that provide message filters for the HekaClient.

Each provider accepts needed filter configuration values, and returns a
filter function usable by a HekaClient instance.

Each filter accepts a single `msg` dictionary argument and returns a
boolean value: True if a message *should* be delivered, False if a
message *should not* be delivered. Note that the `msg` dictionary *may*
be mutated by the filter.

"""


[docs]def severity_max_provider(severity): """Filter if message severity is greater than specified `severity`.""" def severity_max(msg): if msg.severity > severity: return False return True return severity_max
[docs]def type_blacklist_provider(types): """Filter if message type is in the `types` value.""" def type_blacklist(msg): if msg.type in types: return False return True return type_blacklist
[docs]def type_whitelist_provider(types): """Filter if message type is NOT in the `types` value.""" def type_whitelist(msg): if msg.type not in types: return False return True return type_whitelist
[docs]def type_severity_max_provider(types): """Filter if message type has specified maximum severity value and message severity is higher than this maximum. Each keyword argument key should be a message type name, and each keyword argument value should be the maximum allowed severity for that message type. """ for msgtype in types: severity_filter = severity_max_provider(**types[msgtype]) types[msgtype] = severity_filter def type_severity_max(msg): msgtype = msg.type if msgtype not in types: return True severity_filter = types[msgtype] return severity_filter(msg) return type_severity_max