Pythonの繰り返し出力ログ、重複して印刷ログ

ログコードを設定します。 

#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')

 

 

公開された115元の記事 ウォン称賛34 ビュー90000 +

おすすめ

転載: blog.csdn.net/u011519550/article/details/103051656