0

运行一个名为的模块log.py会创建一个文件,在该文件my_file.log中记录脚本运行的时间。在我的本地项目中运行log.py(过度)写入日志文件非常好,但由于某种原因,在我在 heroku 中的生产部署上运行它不会写入my_file.log. Thelog.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 回答