初めてロギングモジュールをいじりました。私は本当に2つの質問があります:
FileHandler の作成で見つけたすべての例では、ダミーのファイル名を使用しているだけですが、ログ ファイルに特定のタイトル形式を持たせたいと考えています。
log = time.strftime('./logs/'+'%H:%M:%S %d %b %Y', time.localtime())+'.log'
logger = logging.getLogger('myproject')
formatter = logging.Formatter('%(asctime)s %(message)s', '%H:%M:%S %d %b %Y')
handler = logging.FileHandler(log)
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
ログファイルが作成されるという点で、これは最初は機能しているように見えますが、スクリプトを強制終了して調べると、そこには何もありません。の使用を提案する前に、 in の代わりにinをwith open(log) as f:
使用すると、ファイルが作成されていないというエラーが表示されます。ログファイルが書き込まれないと何が間違っていますか? ファイル名を賢く使いすぎたせいでしょうか。f
log
handler = logging.FileHandler(log)
2 番目の質問は、最初の質問を何らかの形で包含している可能性があります。このスクリプトは時間がかかり、進行状況を測定したいので、コンソールとログ ファイルの両方に同時に書き込む方法が本当に必要です。hereなど、これを行う方法に関する回答があることを確認しましたが、これらはすべて、2つの異なる出力に対して異なるレベルのログが必要であることを前提としているようです。私はしません。ちなみに、私のスクリプトがログ ファイルの名前を動的に生成しなかった場合は、python myscript.py | tee log.file
さまざまなハンドラーを作成しないようにするなどの方法が考えられます。
最初の質問には変数が含まれているため、2 番目の質問に答えるのに苦労しているように感じますが、病気とその後の睡眠不足のために、今は霧がかかっています。5 歳児のように、コンソールとログ ファイルの両方に同じ出力を書き込む方法を誰かが説明してくれたら、とても助かります。
どうもありがとう。