examples: set up and explain logging too.

This commit is contained in:
David Wilson 2018-12-07 20:37:32 +00:00
parent fbd7346d02
commit 9ddedf9455
1 changed files with 18 additions and 0 deletions

View File

@ -15,6 +15,7 @@ import spwd
import mitogen.core import mitogen.core
import mitogen.master import mitogen.master
import mitogen.service import mitogen.service
import mitogen.utils
@ -204,6 +205,15 @@ def work_on_machine(context):
def main(): def main():
# Setup logging. Mitogen produces a LOT of logging. Over the course of the
# stable series, Mitogen's loggers will be carved up so more selective /
# user-friendly logging is possible. mitogen.log_to_file() just sets up
# something basic, defaulting to INFO level, but you can override from the
# command-line by passing MITOGEN_LOG_LEVEL=debug or MITOGEN_LOG_LEVEL=io.
# IO logging is sometimes useful for hangs, but it is often creates more
# confusion than it solves.
mitogen.utils.log_to_file()
# Construct the Broker thread. It manages an async IO loop listening for # Construct the Broker thread. It manages an async IO loop listening for
# reads from any active connection, or wakes from any non-Broker thread. # reads from any active connection, or wakes from any non-Broker thread.
# Because Mitogen uses a background worker thread, it is extremely # Because Mitogen uses a background worker thread, it is extremely
@ -234,6 +244,14 @@ def main():
# the context as a subprocess, the simplest possible case. # the context as a subprocess, the simplest possible case.
child = router.local() child = router.local()
print("Created a context:", child) print("Created a context:", child)
print()
# This demonstrates the standard IO redirection. We call the print
# function in the remote context, that should cause a log message to be
# emitted. Any subprocesses started by the remote also get the same
# treatment, so it's very easy to spot otherwise discarded errors/etc.
# from remote tools.
child.call(print, "Hello from child.")
# Context objects make it semi-convenient to treat the local machine the # Context objects make it semi-convenient to treat the local machine the
# same as a remote machine. # same as a remote machine.