logger.halulogger のソースコード

# coding: utf-8

import logging
import logging.handlers

from   halumain.haluconf import HaluConf


[ドキュメント] class HaluLogger: def __init__(self, logname): # コンフィグをインスタンス hconf = HaluConf() # ------------------------------------------------------------- # ログレベルの設定 # Level = DEBUG 開発者用ログを出力 # = INFO 指示・案内等を出力(エラーではない) # = WARNING 想定外のエラーが発生(継続可能) # = ERROR 致命的なエラーが発生 # = CRITICAL プログラムの実行不能なエラー # ------------------------------------------------------------- # 指定された名前でロガーを取得する hlog = logging.getLogger(logname) # ロガーにログレベルを登録する if hconf.loglebel == 'DEBUG': hlog.setLevel(logging.DEBUG) elif hconf.loglebel == 'INFO': hlog.setLevel(logging.INFO) elif hconf.loglebel == 'WARNING': hlog.setLevel(logging.WARNING) elif hconf.loglebel == 'ERROR': hlog.setLevel(logging.ERROR) else: hlog.setLevel(logging.CRITICAL) #ログファイルを日別でローテーションするハンドラーを定義 trh = logging.handlers.TimedRotatingFileHandler( filename = hconf.syspath + '/Server/Logs/' + logname + '.log', encoding = 'utf-8', when = 'MIDNIGHT', backupCount = 3 ) # 日別ハンドラーに出力のフォーマットを登録する formatter = logging.Formatter('%(asctime)s <%(levelname)s> : %(message)s') trh.setFormatter(formatter) # 日別ハンドラーにログレベルを登録する if hconf.loglebel == 'DEBUG': trh.setLevel(logging.DEBUG) elif hconf.loglebel == 'INFO': trh.setLevel(logging.INFO) elif hconf.loglebel == 'WARNING': trh.setLevel(logging.WARNING) elif hconf.loglebel == 'ERROR': trh.setLevel(logging.ERROR) else: trh.setLevel(logging.CRITICAL) #ロガーに日別ハンドラーを登録する hlog.addHandler(trh) # ------------------------------------------ # レベル別 ログ出力メソッド # ------------------------------------------ # DEBUG ログ出力
[ドキュメント] def debug(self, logname, msg): log = logging.getLogger(logname) log.debug(msg)
# INFO ログ出力
[ドキュメント] def info(self, logname, msg): log = logging.getLogger(logname) log.info(msg)
# WARNING ログ出力
[ドキュメント] def warning(self, logname, msg): log = logging.getLogger(logname) log.warning(msg)
# ERROR ログ出力
[ドキュメント] def error(self, logname, msg): log = logging.getLogger(logname) log.error(msg)
# CRITICAL ログ出力
[ドキュメント] def critical(self, logname, msg): log = logging.getLogger(logname) log.critical(msg)
# --------------------------- # テスト&使用法 開始 # ---------------------------
[ドキュメント] def main(): print('*** main start ***\n') log = HaluLogger('controller') log.debug('controller', 'コントローラ デバッグ ログ') log.error('controller', 'コントローラ エラー ログ') log = HaluLogger('model') log.debug('model', 'モデル DEBUG ログ') log.info('model', 'モデル INFO ログ') log.warning('model', 'モデル WARNING ログ') log.error('model', 'モデル ERROR ログ') log.critical('model', 'モデル CRITICAL ログ') log = HaluLogger('modeldb') log.debug('modeldb', 'モデルDB デバッグ ログ') log.error('modeldb', 'モデルDB エラー ログ') log = HaluLogger('view') log.debug('view', 'ビュー デバッグ ログ') log.error('view', 'ビュー エラー ログ') print('\n*** main end ***')
if __name__ == '__main__': main()