nic*_*ius 6 apache django logging
我在我的 Django 项目中设置了日志记录。它在本地开发中工作,但在生产中造成麻烦。settings.py位如下:
import os
PROJECT_PATH = os.path.abspath(os.path.dirname(__name__))
. . .
'handlers': {
'log_file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(PROJECT_PATH, 'logs/django.log'),
'maxBytes': '16777216',
'formatter': 'verbose'
},
. . .
Run Code Online (Sandbox Code Playgroud)
我不断收到此错误/var/log/apache2/error.log:
ValueError: Unable to configure handler 'log_file': [Errno 2] No such file or directory: '/logs/django.log'
Run Code Online (Sandbox Code Playgroud)
我已经通过运行代码和PROJECT_PATH手动设置在 Django shell 中对此进行了测试,它似乎返回了正确的路径。另外,我已经检查并检查了日志文件的权限。虽然没有必要,但我将其更改为777只是为了测试。仍然没有运气。
当生产日志为空时,我的本地日志填满了我期望的所有内容。
考虑到这一点,我认为这个日志位置可能不是最好的,但如果它在生产中工作,至少我会知道......然后,我可以改变位置。
我错过了什么?
虽然我真的很想得到这个问题的答案,但我决定采取另一种方法,这样我就可以继续前进了。似乎这个问题没有引起足够的关注,我现在不觉得是赏金,所以我暂时禁用了记录到文件。无论如何,我将重新设计我的方法,所以这似乎是一个不错的主意。
我暂时想到的似乎有效并且不会出错的是这个(对于文件处理程序定义):
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/some/fixed/path/to/logs/django.log',
},
Run Code Online (Sandbox Code Playgroud)
请注意,在我使用从os.path.join(PROJECT_PATH, 'logs/django.log'). 不知道为什么这不起作用,但它是罪魁祸首。所以即使这一点是正确的:(PROJECT_PATH = os.path.abspath(os.path.dirname(__name__))甚至在 python shell 中确认),它也没有在生产中工作。
| 归档时间: |
|
| 查看次数: |
8142 次 |
| 最近记录: |