2013-05-08 44 views
6

Tôi đang cố gắng thiết lập cài đặt ghi nhật ký của mình để gửi logging.info('any message') tới tệp qua stdout.Gunicorn Django và thông tin ghi nhật ký vào một tệp

Đây là gunicorn_django kịch bản của tôi:

$ gunicorn_django -w $NUM_WORKERS --user=$USER --group=$GROUP --log-level=info --log-file=$LOGFILE &>>$LOGFILE

Đây là những thiết lập đăng nhập của tôi:

import sys 
LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'formatters': { 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'console': { 
      'level': 'INFO', 
      'filters': ['require_debug_false'], 
      'class': 'logging.StreamHandler', 
      'stream': sys.stdout, 
      'formatter': 'simple', 
     }, 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     } 
    }, 
    'loggers': { 
     'app.location': { 
      'handlers': ['console'], 
      'level': 'INFO', 
      'propagate': False, 
     }, 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
    } 
} 

Khi tôi làm:

import logging 
logging.getLogger('app.location') 
logging.info('any message') 

Nó không phải là đăng nhập vào gunicorn_django $ LOGFILE. Chỉ cần print >> sys.stderr thông điệp dường như được thấy trong $ logfile

Làm thế nào tôi có thể đăng nhập thông điệp thông tin (thông qua stdout) vào một tập tin

Trả lời

4

logger của bạn chỉ là nhận được thu gom rác thải ngay sau khi bạn tạo ra nó. Bạn cần giữ tham chiếu đến nó dưới dạng trình ghi nhật ký và sau đó sử dụng trình ghi nhật ký đó, như vậy:

import logging 


logger = logging.getLogger('app.location') 
logger.info('any message')