fork(2) download
  1. from __future__ import print_function
  2.  
  3. import logging
  4.  
  5. from io import IOBase
  6. from sys import stdout
  7. from platform import python_version_tuple
  8.  
  9. if python_version_tuple()[0] == '3':
  10. from IO import StringIO
  11. else:
  12. try:
  13. from cStringIO import StringIO
  14. except ImportError:
  15. from StringIO import StringIO
  16.  
  17. # Some other file, like __init__.py
  18. logging.basicConfig(format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', level='INFO')
  19. handler = logging.root.handlers.pop()
  20. assert logging.root.handlers == [], "root logging handlers aren't empty"
  21. handler.stream.close()
  22. handler.stream = stdout
  23. logging.root.addHandler(handler)
  24. # Some other file, like __init__.py
  25.  
  26. log = logging.getLogger(__name__)
  27. stderr_stream = logging.StreamHandler(StringIO())
  28. log.addHandler(stderr_stream)
  29. log.setLevel(logging.ERROR)
  30. print('log.level =', {logging.INFO: 'INFO',
  31. logging.ERROR: 'ERROR'}[log.level])
  32.  
  33. stdout_stream = logging.StreamHandler(StringIO())
  34. log.addHandler(stdout_stream)
  35. log.setLevel(logging.INFO)
  36. print('log.level =', {logging.INFO: 'INFO',
  37. logging.ERROR: 'ERROR'}[log.level])
  38.  
  39. log.info('hello')
  40. log.error('world')
  41. print('stderr_stream =', stderr_stream.stream.getvalue())
  42. print('stdout_stream =', stdout_stream.stream.getvalue())
Success #stdin #stdout 0.01s 47976KB
stdin
Standard input is empty
stdout
log.level = ERROR
log.level = INFO
2016-12-23 09:03:27,761 __main__     INFO     hello
2016-12-23 09:03:27,761 __main__     ERROR    world
stderr_stream = hello
world

stdout_stream = hello
world