1

本番環境 (arch linux) でログを取得できません。ローカルマシンでは正常に動作します。ロギング設定は次のとおりです。

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'verbose': {
        'format': 'LEVEL:%(levelname)s TIME:%(asctime)s MODULE:%(module)s LINE:%(lineno)d PROCESS:%(process)d THREAD:%(thread)d MESSAGE:%(message)s'
    },
},
'filters': {
    'require_debug_false': {
        '()': 'django.utils.log.RequireDebugFalse'
    }
},
'handlers': {
    'mail_admins': {
        'level': 'ERROR',
        'filters': ['require_debug_false'],
        'class': 'django.utils.log.AdminEmailHandler'
    },
    'logfile': {
        'level':'DEBUG',
        'class':'logging.FileHandler',
        'filename':  "logs/logfile314.txt",
        'formatter': 'verbose',
    }
},
'loggers': {
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': True,
    },
    'myLog': {
        'handlers': ['logfile'],
        'level': 'DEBUG',
    },
}

}

これを本番環境にデプロイすると、Apache ログに次のエラーが表示されました。

ValueError: Unable to configure handler 'logfile': [Errno 13] Permission denied: '/srv/http/logs/logfile314.txt'

だから私は行って、へのアクセス許可を修正しまし/srv/http/logsた:

drwxrwxrwx  2 root root  4.0K Aug 21 16:05 logs

アプリケーションが起動しなくなり、2 ~ 3 分後にフロント ページの読み込みが中断し、Apache ログに次のエラーが記録されます。

Fatal Python error: PyEval_AcquireThread: NULL new thread state
[Wed Aug 21 16:05:58 2013] [notice] child pid 32559 exit signal Aborted (6)
[Wed Aug 21 16:11:03 2013] [error] [client 89.142.110.111] Premature end of script headers: wsgi.py

しかし、私は長い間 wsgi.py を変更していません。ロギングの設定を削除するか、アクセス許可を持たない http ユーザーへのパスを指定すると、すべて正常に動作します。おそらくログファイルを配置するのに適切な場所ではないため、ログファイルへの絶対パスを配置しようとしまし/srv/http/logsたが、これでも機能しません。

ロギングを本番環境でも機能させるためのアイデアや提案はありますか?

4

2 に答える 2

0

私は同じエラーに遭遇しました。新しいフォルダーとファイルを作成した場合、ユーザー名とグループ名は両方とも Apache であることがわかりました。エラーは見逃されます。

于 2016-04-07T07:01:03.790 に答える