2013-02-14 128 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