logtoprocess

Contents

send ui.log() data to a subprocess (EXPERIMENTAL)

Description

This extension lets you specify a shell command per ui.log() event, sending all remaining arguments to as environment variables to that command.

Positional arguments construct a log message, which is passed in the MSG1 environment variables. Each keyword argument is set as a OPT_UPPERCASE_KEY variable (so the key is uppercased, and prefixed with OPT_). The original event name is passed in the EVENT environment variable, and the process ID of mercurial is given in HGPID.

So given a call ui.log('foo', 'bar %s ', 'baz', spam='eggs'), a script configured for the `foo event can expect an environment with MSG1=bar baz, and OPT_SPAM=eggs.

Scripts are configured in the [logtoprocess] section, each key an event name. For example:

[logtoprocess]
commandexception = echo "$MSG1" > /var/log/mercurial_exceptions.log

would log the warning message and traceback of any failed command dispatch.

Scripts are run asynchronously as detached daemon processes; mercurial will not ensure that they exit cleanly.