2017-09-11 3 views
0

私のプロジェクトのディレクトリ構造は次のとおりです。私がpackage 1からスクリプトを実行すると、logsディレクトリにログが作成されますが、テストから実行するとファイルを書き込めません。テストディレクトリから実行するとログファイルが見つかりません

/project 
     __init__.py 
    /flask_app 
     __init__.py 
     /scripts 
     __init__.py 
     logging.config.py 
      /package1 
       __init__.py 
       mypython.py 
      /logs 
       logging.log 
     /tests 
      __init__.py 
      test_mypython.py 

mypython.pyコード:コマンド

py.test 

を発行することによって

self.logger = configure_logger('log_handler','../logs/logging.py') 

私はテストからmypython.pyを実行している私は、応答が

[Errno 2] No such file or directory: 
    /home/mac/project/flask_app/logs/logging.log 

どれ取得すべてはっきりwですそれはこれまでのところ、私は

log_file = pkg_resource.resource_filename(__name__, '../logs/logging.log') 
self.logger = configure_logger('log_handler',log_file) 

を使用して(mypython.py)を試してみましたtestsディレクトリ

からのパスを見つけようとするよう栄私はまた、それらの

package_dir = os.path.dirname(os.path.abspath(__file__)) 
log_file=os.path.join(os.path.dirname(__file__),'../logs/logging.log') 

どれも動作するようには思えませんみました。私のディレクトリをmypackage1に変更してpy.testを実行すると、すべて動作します。私はテストディレクトリ内の他の単体テストを持っているので、それを望んでいません。私は今、かなり不満を抱いています。誰かが私のコードで何が間違っているのかを指摘できたらと感謝します。私はパッケージのリソースを解決する必要があると思った。それは明らかではありません。事前のおかげで

答えて

0

のどちらか(なしカレントディレクトリに)モジュールに関連したパスでログを構成する:

self.logger = configure_logger('log_handler', os.path.dirname(__file__) + '/../logs/logging.py') 

をまたは相対パスでログインする設定する前に、logsディレクトリを作成します。実際に

try: 
    os.mkdir('../logs') 
except OSError: # Exists 
    pass 
self.logger = configure_logger('log_handler','../logs/logging.py') 
+0

問題は解決されました。 'os.path.dirname(__ filename __)、 '.../log/logging.log)'を使ってください。それはそれを更新していないファイルの1つでした。ありがとう。私はログファイルを作成するあなたの提案を取り入れましたが、それは欠けていました。 –

関連する問題