Date: 2009-05-27
Tags: python

Re: pythonで毎回使いたいloggingモジュールのテンプレート

pythonで毎回使いたいloggingモジュールのテンプレート - a2c.get.diary への時間差反応です。2ヶ月差? 自分が普段使っているloggingのテンプレを貼っておきます。複数のloggerオブジェクトを作れるとか色々やった痕跡があったりして、元記事よりもコードがでかいなぁ...。

import sys, logging
logger = logging.getLogger('foologger')

def setup_logger(opts):
    # setup output
    if opts.log:
        hdlr = logging.FileHandler(opts.log, 'a')
    else:
        hdlr = logging.StreamHandler(sys.stdout)
    formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr)
    if opts.debug:
        logger.setLevel(logging.DEBUG)
    else:
        logger.setLevel(logging.INFO)

    # setup error output
    hdlr = logging.StreamHandler()
    hdlr.setLevel(logging.ERROR)
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr)


def setup_optparser():
    from optparse import OptionParser, OptionGroup
    usage = 'usage: %prog [options] command'
    parser = OptionParser(usage=usage)
    parser.add_option('-l', '--log',
                      dest='log',
                      default='',
                      help="Filename for log output",
                      )
    parser.add_option('-d', '--debug',
                      dest='debug',
                      action='store_true',
                      default=False,
                      help="Enable debug output",
                      )
    group = OptionGroup(parser, "command",
                        "something else..."
                        )
    parser.add_option_group(group)
    return parser


if __name__ == '__main__':
    parser = setup_optparser()
    options, args = parser.parse_args(sys.argv)
    setup_logger(options)

    if len(args)<2:
        parser.print_help()
        sys.exit(1)

    # do something...