2016-07-24 11 views
1

いくつかのmonths.Several週間前、私はinformation.Iこのようlog-to-file機能を書いたログ記録するためにファイルを使用し始めたため、私はscrapyを使用していますscrapyの各クラスでのロガーのファイル名の設定方法は?

def logging_to_file(file_name): 
import logging 
from scrapy.utils.log import configure_logging 

filename = '%s-log.txt' % file_name 
import os 

if os.path.isfile(filename): 
    os.remove(filename) 
configure_logging(install_root_handler=False) 
logging.basicConfig(
    filename=filename, 
    filemode='a', 
    format='%(levelname)s: %(message)s', 
    level=logging.DEBUG 
) 
return logging.getLogger()  

を次に、各scrapyクモクラスでは、私はlogger = logging_file.logging_to_file('./logs/xxx-%s' % time.strftime('%y%m%d'))を使用__init__ログファイル名をカスタマイズする機能。
今日は何かが間違っていたのですが、1つの.pyファイルに2つのスクラブクラスを書きました。そして、2番目のクラスのスパイダーを開始した後、ログファイルもファーストクラスで指定されたファイル名で命名されました。
これはPythonのログルールが原因だと思いますが、解決方法はわかりません。

答えて

1

あなたの質問が何であるか分かりませんが、一般的には、ロガーを設定するための機能や何かを作成する必要はありません。

ロガーを作成してFileHandlerに割り当ててから、作成したロガーを使用して情報をログに記録するだけです。

import logging 
logger = logging.getLogger('mylogger') # skip name for global rules 
fh = logging.FileHandler(LOG_FILE_DIR, mode='a') 
logger.addHandler(fh) 

あなたは__init__.pyか何かのように、プログラムの起動時に実行されます。このどこにでも置くことができます。

は今、あなただけの何かを記録したいとき:

logger = logging.getLogger('mylogger') 
logger.error("error happened, oh no!") 

公式Pythonのロギングチュートリアルを見つけることができますhere

+0

あなたの答えは便利です、ありがとうございました! – nick

関連する問題