Python 用途に応じてログファイルを分けて出力したい。
用途別(通信、ユーザー操作、その他など)にログファイルを分けて出力したいのですが、
以下のコードでは、2つのログファイルに同じ出力となります。
※本来のコードから切り貼りしており、一部なんでこんな書き方?となっているとは思いますが、ご容赦ください。
意図するところでは、
alog.debug("なんでこうなるのか?")->app.logのみに出力したい。
ulog.debug("わかりません。")->user.logのみに出力したい。
ご存知の方がいらっしゃれば、ご教示をお願いします。
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import logging
import logging.handlers
class _writeLog():
def __init__(self, logger):
self.logger = logger
def debug(self,log_text,*args,**kwargs):
ret = self.logger.debug(log_text,*args,**kwargs)
return ret
def info(self,log_text,*args,**kwargs):
ret = self.logger.info(log_text,*args,**kwargs)
return ret
def warning(self,log_text,*args,**kwargs):
ret = self.logger.warning(log_text,*args,**kwargs)
return ret
def error(self,log_text,*args,**kwargs):
ret = self.logger.error(log_text,*args,**kwargs)
return ret
def critical(self,log_text,*args,**kwargs):
ret = self.logger.critical(log_text,*args,**kwargs)
return ret
def notset(self,log_text,*args,**kwargs):
ret = self.logger.debug(log_text,*args,**kwargs)
return ret
def write_log():
_Log = dict()
LOGS_FORMAT = (
"%(asctime)s "
"%(name)s "
"%(process)06d "
"%(thread)06d "
"%(levelname)8s "
"%(message)s"
)
path = [
'app',
'user'
]
for i in range(2):
hLog = logging.handlers.RotatingFileHandler(path[i]+'.log',backupCount=2,maxBytes=1*1024*1024)
hLog.setFormatter(logging.Formatter(LOGS_FORMAT))
hLog.setLevel('DEBUG')
_Log.setdefault(path[i],hLog)
app_handler = _Log['app']
user_handler = _Log['user']
log_header = __name__
app_logger = logging.getLogger(log_header)
user_logger = logging.getLogger(log_header)
app_logger.setLevel('DEBUG')
app_logger.addHandler(app_handler)
alog = _writeLog(app_logger)
user_logger.setLevel('DEBUG')
user_logger.addHandler(user_handler)
ulog = _writeLog(user_logger)
alog.debug("なんでこうなるのか?")
ulog.debug("わかりません。")
if __name__ == '__main__':
write_log()