0

と呼ばれるモジュールを実行すると、スクリプトが実行された時刻をログに記録log.pyするファイルが作成されます。my_file.logローカルプロジェクトでログファイルに(オーバー)書き込みを実行log.pyすると完全に正常に書き込みますが、何らかの理由で、herokuの本番デプロイで実行しても書き込みが行われませんmy_file.log。またlog.py、他のいくつかのことも行いますが、それlog.pyは実際にHerokuで実行されたことがわかります。書き込まれないのはログだけです。

最初は権限の問題かもしれないと思いましたがls -l

drwx------ 3 my_app
-rw------- 1 my_file.log

以下は私のプロジェクト構造です。

.
├── my_project
│   ├── my_app
│   │   ├── __init__.py
│   │   ├── models.py
│   │   ├── tests.py
│   │   ├── views.py
│   │   ├── my_file.log
│   │   └── management
│   │       ├── __init__.py
│   │       └── commands
│   │           ├── __init__.py
│   │           └── log.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── requirements.txt

私の開発バージョンでは、ログファイルが毎回上書きされるため、カスタムDjangoコマンドとして使用されているコードとは何の関係もありません。

log.pyこれは、以下へのロギングを担当するスニペットですmy_file.log

log_lc = os.path.join(os.path.dirname(os.path.abspath(__file__)), 
  os.path.pardir, os.path.pardir, "my_file.log")
logging.basicConfig(filename=log_lc,level=logging.INFO,
  format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p',
  filemode="w")

logging.info("You just ran my_file.log")
4

1 に答える 1

4

Heroku は読み取り専用です。独自のログ ファイル を作成しようとしてmy_file.logいますが、ファイル システムに何も書き込めないため、作成できません。

ただし、ログ メッセージを Heroku の標準ログに出力することはできます。これがそのためのドキュメントです。. その後、 経由でメッセージを確認できますheroku logs

Heroku の標準のロギングに加えて、Heroku アプリにインストールできるロギング用のアプリが多数用意されています。それ以外の場合は、電子メール オプションを使用するか、ログ ファイルを などのサード パーティの場所に書き込むことを検討してくださいs3

于 2013-02-01T19:20:40.067 に答える