を重複しましたA.pyとB.py、今私はいつでも私はそれらを呼び出すときにすべての情報を記録する必要があります。Pythonのログは私がの機能を使用するには、メイン使用しています4つのファイル、</p> <ul> <li>Main.py</li> <li>A.py</li> <li>B.py</li> <li>Log_System</li> </ul> <p>を持って
ので、私は、私は、スクリプトファイルA.pyでロギングを使用したい場合はそうなA.py、B.py
としてimport logging
def fetchLogger(name="None") :
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
if (name == "None"):
#create File for Log
handler = logging.FileHandler('./engine_log/Generic.log')
handler.setLevel(logging.DEBUG)
#log format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#adding the handler to Logging System
logger.addHandler(handler)
else:
#create File for Log
handler = logging.FileHandler('./engine_log/'+str(name))
handler.setLevel(logging.DEBUG)
#log format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#adding the handler to Logging System
logger.addHandler(handler)
return logger
を各スクリプトファイルのログハンドラを作成するためにlog_systemというスクリプトを書きましたそれは担当者である
import log_system
"""Log System Building """
file_name = 'A.py'
logger = log_system.fetchLogger(file_name)
def hello():
try:
logger.info("excuting Hello")
except:
logger.debug("something went wrong in hello")
が、私のログファイル
2017-10-18 14:59:28,695 - log_system - INFO - A.py-excuting Hello
2017-10-18 14:59:28,695 - log_system - INFO - A.py-excuting Hello
2017-10-18 14:59:28,695 - log_system - INFO - A.py-excuting Hello
2017-10-18 14:59:28,695 - log_system - INFO - A.py-excuting Hello
2017-10-18 14:59:28,695 - log_system - INFO - A.py-excuting Hello
:これらの行を記述しますログを何度も食べています.... どうすればいいですか?
ソリューション
logger = logging.getLogger(name)
if logger.hasHandlers():
logger.handlers = []
logger.setLevel(logging.DEBUG)
#create File for Log
handler = logging.FileHandler('./engine_log/'+str(name))
handler.setLevel(logging.DEBUG)
#log format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
#adding the handler to Logging System
logger.addHandler(handler)
return logger
これは私が私のlog_systemコードを変更し、それが重複するレコードを作成しないように、私はすでにログハンドラを作成した場合、私はちょうどハンドラのリストを空にする方法です。
この解決策はありがとうございました。 –