ログコードを設定します。
#log_setup.py
import logging
def setup_log(name=__name__,filename=None):
logger = logging.getLogger(name)
logger.setLevel(level=logging.INFO)
formatter = logging.Formatter(fmt='%(asctime)s-%(module)s-%(lineno)d-%(message)s', datefmt='%Y/%m/%d %H:%M:%S')
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
#if not logger.hasHandlers():
# logger.addHandler(stream_handler)
if filename:
file_handler = logging.FileHandler(filename)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
return logger
コールログコード:
#module1.py
from log_setup import setup_log
logger = setup_log()
info_logger = setup_log( filename='log/info_logger.log')
コンソールログには、重複して印刷データを表示し、コードを見ている検索:
私たちは、私はそれがコールロガー出力が得られ、2 stream_handlerを追加することと等価であるので、彼らは、同じ例に対処されて生成ロガーとinfo_loggerで、その結果、二回setup_log機能、ないの着信パラメータ名を呼ばれ、次の理由を発見しましたコンソール出力二回ログ。
ソリューション:
Log_setup着信コールはhasHandlersの判断に何かをするライン上の別の名前を入力し、[setup_log機能や方法があります。
logger = setup_log(__name__)
info_logger = setup_log(name='info', filename='log/info_logger.log')