Config

This module provides helpers to handle MetlogClient configuration details.

metlog.config._convert(value)[source]

Converts a config value. Numeric integer strings are converted to integer values. ‘True-ish’ string values are converted to boolean True, ‘False-ish’ to boolean False. Any alphanumeric (plus underscore) value enclosed within ${dollar_sign_curly_braces} is assumed to represent an environment variable, and will be converted to the corresponding value provided by os.environ.

metlog.config.client_from_dict_config(config, client=None, clear_global=False)[source]

Configure a metlog client, fully configured w/ sender and plugins.

Parameters:
  • config – Configuration dictionary.
  • client – MetlogClient instance to configure. If None, one will be created.
  • clear_global – If True, delete any existing global config on the CLIENT_HOLDER before applying new config.

The configuration dict supports the following values:

logger
Metlog client default logger value.
severity
Metlog client default severity value.
disabled_timers
Sequence of string tokens identifying timers that are to be deactivated.
filters
Sequence of 2-tuples (filter_provider, config). Each filter_provider is a dotted name referring to a function which, when called and passed the associated config dict as kwargs, will return a usable MetlogClient filter function.
plugins
Nested dictionary containing plugin configuration. Keys are the plugin names (i.e. the name the method will be given when attached to the client). Values are 2-tuples (plugin_provider, config). Each plugin_provider is a dotted name referring to a function which, when called and passed the associated config, will return the usable plugin method.
sender
Nested dictionary containing sender configuration.
global
Dictionary to be applied to CLIENT_HOLDER’s global_config storage. New config will overwrite any conflicting values, but will not delete other config entries. To delete, calling code should call the function with clear_global set to True.

All of the configuration values are optional, but failure to include a sender may result in a non-functional Metlog client. Any unrecognized keys will be ignored.

Note that any top level config values starting with sender_ will be added to the sender config dictionary, overwriting any values that may already be set.

The sender configuration supports the following values:

class (required)
Dotted name identifying the sender class to instantiate.
args
Sequence of non-keyword args to pass to sender constructor.
<kwargs>
All remaining key-value pairs in the sender config dict will be passed as keyword arguments to the sender constructor.
metlog.config.client_from_stream_config(stream, section, client=None, clear_global=False)[source]

Extract configuration data in INI format from a stream object (e.g. a file object) and use it to generate a Metlog client. Config values will be sent through the _convert function for possible type conversion.

Parameters:
  • stream – Stream object containing config information.
  • section – INI file section containing the configuration we care about.
  • client – MetlogClient instance to configure. If None, one will be created.

Note that all sender config options should be prefaced by “sender_”, e.g. “sender_class” should specify the dotted name of the sender class to use. Similarly all extension method settings should be prefaced by “extensions_”. Any values prefaced by “global_” will be added to the global config dictionary.

metlog.config.client_from_text_config(text, section, client=None, clear_global=False)[source]

Extract configuration data in INI format from provided text and use it to configure a Metlog client. Text is converted to a stream and passed on to client_from_stream_config.

Parameters:
  • text – INI text containing config information.
  • section – INI file section containing the configuration we care about.
  • client – MetlogClient instance to configure. If None, one will be created.
metlog.config.dict_from_stream_config(stream, section)[source]

Parses configuration from a stream and converts it to a dictionary suitable for passing to client_from_dict_config.

Parameters:
  • stream – Stream object containing config information.
  • section – INI file section containing the configuration we care about.
metlog.config.nest_prefixes(config_dict, prefixes=None, separator='_')[source]

Iterates through the config_dict keys, looking for any starting w/ one of a specific set of prefixes, moving those into a single nested dictionary keyed by the prefix value.

Parameters:
  • config_dict – Dictionary to mutate. Will also be returned.
  • prefixes – Sequence of prefixes to look for in config_dict keys.
  • separator – String which separates prefix values from the rest of the key.