1# Copyright 2017 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5"""Shared logging functions""" 6 7from __future__ import absolute_import 8from __future__ import division 9from __future__ import print_function 10 11import logging 12import logging.config 13 14 15def add_logging_options(parser): 16 """Add logging configuration options to argument parser. 17 18 @param parser: ArgumentParser instance. 19 """ 20 # Unused for the moment, but will be useful when we need to add 21 # logging options. 22 del parser 23 24 25def configure_logging_with_args(parser, args): 26 """Convenience function for calling configure_logging(). 27 28 @param parser: ArgumentParser instance. 29 @param args: Return value from ArgumentParser.parse_args(). 30 """ 31 # Unused for the moment, but will be useful when we need to add 32 # logging options. 33 del args 34 configure_logging(name=parser.prog) 35 36 37def configure_logging(name): 38 """Configure logging globally. 39 40 @param name: Name to prepend to log messages. 41 This should be the name of the program. 42 """ 43 logging.config.dictConfig({ 44 'version': 1, 45 'formatters': { 46 'stderr': { 47 'format': ('{name}: ' 48 '%(asctime)s:%(levelname)s' 49 ':%(module)s:%(funcName)s:%(lineno)d' 50 ':%(message)s' 51 .format(name=name)), 52 }, 53 }, 54 'handlers': { 55 'stderr': { 56 'class': 'logging.StreamHandler', 57 'formatter': 'stderr' , 58 } 59 }, 60 'root': { 61 'level': 'DEBUG', 62 'handlers': ['stderr'], 63 }, 64 'disable_existing_loggers': False, 65 }) 66