と呼ばれるモジュールを実行すると、スクリプトが実行された時刻をログに記録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")