2017-10-21 26 views
0

アプリケーションフレームワークに実装するカスタムロギングモジュールを作成しています。私はunittestモジュールでPyCharmを使用し、テストランナーとしてnosetestsを使用しています。nosetestsとログパッケージを使用してログ情報をファイルに保存する方法

ここでは簡単なテストケースですが、私が望むように出力をファイル/tmp/test.logに保存しません。

import unittest 
import logging 

class Logger_class____test_cases(unittest.TestCase): 
    def test_log_file_basics(self): 
     # set up logging to file - see previous section for more details 
     logging.basicConfig(level=logging.DEBUG, 
          filename='/tmp/test.log') 
     # define a Handler which writes INFO messages or higher to the sys.stderr 
     console = logging.StreamHandler() 
     console.setLevel(logging.INFO) 
     # set a format which is simpler for console use 
     formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') 
     # tell the handler to use this format 
     console.setFormatter(formatter) 
     # add the handler to the root logger 
     logging.getLogger('').addHandler(console) 

     # Now, we can log to the root logger, or any other logger. First the root... 
     logging.info('Jackdaws love my big sphinx of quartz.') 

     # Now, define a couple of other loggers which might represent areas in your 
     # application: 
     logger1 = logging.getLogger('myapp.area1') 
     logger2 = logging.getLogger('myapp.area2') 

     logger1.debug('Quick zephyrs blow, vexing daft Jim.') 
     logger1.info('How quickly daft jumping zebras vex.') 
     logger2.warning('Jail zesty vixen who grabbed pay from quack.') 
     logger2.error('The five boxing wizards jump quickly.') 

ログ出力をファイルに書き込むにはどうすればよいですか? stdoutstderrをキャプチャしているnosetestsと関係があるようですが、わかりません。

Python logging cookbookからコードを取得しました。

答えて

0

私はそれを理解しました。フレームワーク内のグローバルモジュールにデフォルトのログファイル名が設定されていました。

私は私のテストケースをオーバーライドして、以下のようなものだった:

logging.basicConfig(level=logging.DEBUG, 
         format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', 
         datefmt='%m-%d %H:%M', 
         filename='log_file_name.log', 
         filemode='w') 

そしてもちろん、マーフィーの法則のを、私は質問を投稿する場合、私はすぐに答えを見つけるでしょう。笑

関連する問題