import logging
import sys
def logexam1() :
# 別の場所で定義された myLogger を呼び出し
logger = logging.getLogger('myLogger')
logger.debug('デバックログ')
logger.info('infoログ')
logger.warning('warnログ')
logger.error('エラーログ')
logger.critical("致命的ログ")
def logexam2() :
# 別の場所で定義された myLogger を呼び出し
logger = logging.getLogger('myLogger')
logger.debug('デバックログ2')
logger.info('infoログ2')
logger.warning('warnログ2')
logger.error('エラーログ2')
logger.critical("致命的ログ2")
def logexam3() :
# 未定義の yourLogger を呼び出し
logger = logging.getLogger('yourLogger')
logger.debug('デバックログ3')
logger.info('infoログ3')
logger.warning('warnログ3')
logger.error('エラーログ3')
logger.critical("致命的ログ3")
def loggerInitialize() :
logger = logging.getLogger('myLogger')
logger.setLevel(logging.DEBUG) # 基本のログレベル
# ---------- 標準出力 ----------
sysoutHandler = logging.StreamHandler(sys.stdout)
sysoutFmt = logging.Formatter(\
'%(asctime)s : %(levelname)-8s : %(message)s (%(module)s.py L%(lineno)d %(funcName)s())')
sysoutHandler.setFormatter(sysoutFmt)
logger.addHandler(sysoutHandler)
# ---------- ファイル出力 ----------
# SJIS CRLF 上書きモード で出力する (設定しないと UTF-8 LF 追記(mode='a'))
# ・改行文字は Python3/Win32 でも LF。書式の最後に \r を入れる
# ・encodeing は ms932 にする。windows-31j はエラーになる
fileHandler = logging.FileHandler('log.txt', mode='w', encoding='ms932')
fileFmt = logging.Formatter('%(asctime)s : %(levelname)-8s : %(message)s\r')
fileHandler.setFormatter(fileFmt)
fileHandler.setLevel(logging.INFO) # handler でログレベルを上書き
logger.addHandler(fileHandler)
if __name__ == '__main__':
loggerInitialize()
logexam1()
logexam2()