pythonでログ出力

pythonのロギング機能は挙動を色々設定できる。便利なんだが、大抵の人間はファイル出力してトラブった時に見るという使い方しかしないのでは?document見るのもめんどくせぇ、という方は↓のコードをpython pathの通ってるモジュールに置いとけば幸せになれる。

import os
import logging
import logging.handlers

def logger(level):
    log_file = homePath + '\\debuglog\\log'    # 出力先はご自由に
    if os.path.exists(homePath + '\\debuglog') == False:    os.mkdir(homePath+'\\debuglog')
    log = logging.getLogger()
    handler = logging.handlers.RotatingFileHandler(
                    log_file, maxBytes=(5*1024*1024), backupCount=1000)
    handler.setFormatter( logging.Formatter('%(asctime)s\t%(module)s:%(funcName)s\t%(lineno)d\t%(levelname)s\t- %(message)s') )
    log.addHandler( handler )
    log.setLevel( level )
    return log
mylogger = logger(logging.DEBUG)    # 出力するレベルもご自由に [INFO, WARN, ERROR]

用例

opener = urllib2.build_opener(
                urllib2.HTTPHandler(),
                urllib2.HTTPSHandler(),
                urllib2.ProxyHandler({
                    'http': 'http://hogehoge:80',
                    'https': 'https://hogehoge:80'
                }))
urllib2.install_opener(opener)
try:
    url = urllib2.urlopen('https://www.hatena.ne.jp/login')
    mylogger.info('Url opened: ' + url.geturl())
except urllib2.HTTPError, e:
    mylogger.error(e)
    raise MysException(e)
except urllib2.URLError, e:
    mylogger.error(e)
    raise MysException(e)

############## 出力結果 ######################
# 2012-06-12 12:46:00,069    net:url_open    16    INFO    - Url opened: https://www.hatena.ne.jp/login
##############################################