2013-02-14 168 views
1

我使用celerydjango。很長一段時間,一切都很完美,但最近我遇到了celery的日誌文件權限問題。現在,我已經在我的日誌配置如下:用django記錄芹菜

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'formatters': { 
     'verbose': { 
      'format': '[%(levelname)s %(asctime)s %(thread)d] %(module)s:%(funcName)s - %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
     }, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     }, 
     'mail_admins_critical': { 
      'level': 'CRITICAL', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     }, 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.handlers.TimedRotatingFileHandler', 
      'formatter': 'verbose', 
      'filename': '/tmp/django.log', 
      'when' : 'midnight', 
      'interval' : 1 
     }, 
     'celery': { 
      'level': 'DEBUG', 
      'class': 'logging.handlers.TimedRotatingFileHandler', 
      'formatter': 'verbose', 
      'filename': '/tmp/celery.log', 
      'when' : 'midnight', 
      'interval' : 1 
     }, 
     'console': { 
      'level': 'DEBUG', 
      'formatter': 'verbose', 
      'class': 'logging.StreamHandler' 
     }, 
    }, 
    'loggers': { 
     'main.logger': { 
      'handlers': ['file', 'console', 'mail_admins_critical'], 
      'level': 'INFO', 
      'propagate': True, 
     }, 
     'celery.logger': { 
      'handlers': ['celery', 'console', 'mail_admins_critical'], 
      'level': 'INFO', 
      'propagate': True, 
     }, 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
    } 
} 

對於所有celery文件,我把在頂部以下內容:logger = get_task_logger('celery.logger')

我注意到,芹菜日誌文件具有用戶www-data和它doesn第一次創建日誌文件時沒有寫權限(celery.log)。我怎樣才能更改權限,以便默認情況下呢?直到最近,我開始有這個問題...

我讀對此如下:

https://groups.google.com/forum/?fromgroups=#!topic/celery-users/wUHlE1piHu8

http://docs.celeryproject.org/en/latest/reference/celery.app.log.html

編輯

當我改變行記錄到這個:

logger = get_task_logger(__name__)

並把CELERYD_HIJACK_ROOT_LOGGER = False放在我的settings.py中,它仍然劫持我的主記錄器(main.logger)。有沒有辦法阻止它?然後,將需要以其他方式該日誌文件的權限...

回答

1

在芹菜混帳回購協議通用的初始化腳本使用該專用目錄, 如:

/var/log/celery/worker1.log 
/var/log/celery/worker2.log 
/var/log/celery/beat.log 

然後,你可以給www-data權限創建並在此目錄中讀取文件:

sudo chmod 755 /var/log/celery 
sudo chown www-data:www-data /var/log/celery 

你不應該給到/ var寫訪問/日誌頂級目錄的非特權用戶, 因此使用子目錄一個好的做法。

+0

問題是,它要去django日誌文件...並且有'www-data'用戶名/用戶組。我希望它得到自己的日誌文件。我有一個w1.log等,但它也去django日誌 – KVISH 2013-02-14 17:14:51