2016-12-12 3 views
1

WSGI를 사용하여 장고를 실행하고 Apache의 가상 호스트에 설치 한 오류 파일에 로그를 보냅니다.Django가 아파치 vhost 오류 파일에 로그인하여 수정하는 방법

로깅 구성은 다음

'django': { 
     'handlers': ['logfile'], 
     'level': 'INFO', 
     'propagate': True, 
    }, 
    'django.requests': { 
     'handlers': ['slack_error'], 
     'level': 'ERROR', 
     'propagate': False, 
    }, 
    'django.requests': { 
     'handlers': ['logfile'], 
     'level': 'INFO', 
     'propagate': True, 
    }, 

'version': 1, 
'disable_existing_loggers': True, 
'formatters': { 
    'standard': { 
     'format': "[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)s] %(message)s", 
     'datefmt': "%d/%b/%Y %H:%M:%S" 
    }, 
    'onlymsg': { 
     'format': '%(message)s' 
    }, 
}, 
'handlers': { 
    'logfile': { 
     'level': 'INFO', 
     'class': 'logging.handlers.RotatingFileHandler', 
     'filename': "/var/log/web.log", 
     'maxBytes': 5000000, 
     'backupCount': 3, 
     'formatter': 'standard', 
    }, 
    'slack_chino_error': { 
     'level': 'ERROR', 
     'class': 'handler.AdminSlackHandler', 
     'formatter': 'onlymsg', 
     'slack_url': 'https://hooks.slack.com/...', 
     'channel': '#error_notification', 
     'username': SERVER_NAME 
}, 

아파치 가상 호스트는 내가 web_error.log을 열 경우이 가득 파일을 지금 follwing을

# LOG Possible values include: debug, info, notice, warn, error, crit, alert, emerg. 
CustomLog /var/log/web_access.log combined 
ErrorLog /var/log/web_error.log 
LogLevel warn 

입니다 장고 로그

[Mon Dec 12 12:16:20.054977 2016] [wsgi:error] [pid 13255:tid 139989789542144] GET console.views.generic.generic_view 
[Mon Dec 12 12:18:11.222981 2016] [wsgi:error] [pid 13255:tid 139991418357504] GET console.views.user_info.UserInfo 

나는 이유가 왜 그렇게 말하고 있는지, 또는 다른 이유 때문에 내가 모를 것인지 [wsgi:error]의 beacuse라고 생각합니다. 이러한 항목을 제거하고 영구 변경을 제거하는 방법에 대한 도움이 필요하십니까?

답변

1

파이썬 WSGI 응용 프로그램에서 stdout 또는 stderr으로 출력 된 내용은 Apache 오류 로그에 기록됩니다. 이는 Apache에서 로깅을 수행하는 기본 방법입니다. logging 모듈을 사용하여 별도의 로그 파일을 사용하는 것은 좋지 않습니다. 응용 프로그램이 다중 프로세스로 실행될 수 있다는 사실은 logging 모듈의 회전 파일 핸들러가 제대로 작동하지 않을 수 있다는 것을 의미하기 때문입니다.

왜 아파치 오류 로그 파일을 사용하면 아파치/mod_wsgi를 사용할 때 모범 사례로 간주되는 것이 좋지 않다고 생각하십니까? mod_wsgi에 될 것이라고 사용

FWIW, 전형적인 장고 로깅 구성 :

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console': { 
      'class': 'logging.StreamHandler', 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['console'], 
      'level': 'INFO', 
     }, 
    }, 
} 
+0

흥미 롭군요. 이것에 대한 공식적인 출처가 있습니까? 또는 로깅을 관리하는 방법에 대한 공식 참조 – EsseTi

+0

추신 : 나는 그것이 나쁜 일이라는 것을 말하지 않았다. 내 질문은 오류 로그가 오류가 아닌 로그로 가득 찼다는 사실에 관한 것이었다. – EsseTi

+1

소위 아파치 오류 로그는 오류 만이 아닙니다. Apache는 alert, err, warn, info 및 debug에서 여러 수준의 메시지를 지원합니다. 불행히도 파이썬에서 오는 어떤 것도 아파치의 특정 로그 레벨로 쉽게 변환 할 수 없기 때문에 모든 것이 오류 수준으로 기록됩니다. –