Django 로그 모듈 logging 설정 상세 설명

5477 단어 django로그logging
머리말
Django 는 로그 출력 에 대한 정보 가 완벽 합 니 다.request 의 정보,setting 설정,trackback 의 정보 가 모두 갖 추어 져 있어 서 디 버 깅 하기에 충분 합 니 다.그러나 온라인 환경 에서 사용자 에 게 이런 정 보 를 보 여주 면 안전 하지 않다(노출 코드).그래서 온라인 에서 우 리 는 Debug 를 닫 아야 하지만 이 디 버 깅 정 보 를 버 릴 수도 없습니다.이것 은 logging 모듈 을 사용 해 야 합 니 다.
logging 모듈 은 사실 Python 모듈 로 Django 에서 현지 화 된 지원 이 많 습 니 다.
Logger 이해
먼저 logging 의 작업 을 이해 해 야 합 니 다.이 안 에는 주로 네 가지 가 있 습 니 다.형식 기 formatter,필터 filter,프로세서 handler,로그 인 스 턴 스 logger.
처리 절차

   formatter
logger ----> handler ----------------> files, emails
    filter
처리 절 차 는 이렇다.우선 코드 에 있 습 니 다.우리 가 받 은 것 은 logger 인 스 턴 스 입 니 다.이 인 스 턴 스 를 통 해 정 보 를 기록 합 니 다.

# import the logging library
import logging
 
# Get an instance of a logger
logger = logging.getLogger('django')
 
def my_view(request, arg1, arg):
 ...
 if bad_mojo:
 # Log an error message
 logger.error('Something went wrong!')
그리고 이름 이 django 인 이 logger 는 해당 handler 에 정 보 를 건 네 주 고 handler 는 정 보 를 formater 와 filter 로 처리 하여 log(파일,데이터 베이스 에 저장 하거나 메 일 을 보 냅 니 다)를 제출 합 니 다.
일반적으로 handler 는 send 일 수 있 습 니 다.email,error_file 등 처리 방식 은 logger 에서 handler 를 중복 사용 할 수 있 습 니 다.예 를 들 어 우리 django 프로세서 가 send 를 사 용 했 습 니 다.email, error_file 이 두 프로세서,request 프로세서 사용 errorfile,info_file 두 개의 프로세서,logger 와 handler 는 여러 쌍 의 관계 로 이해 할 수 있 습 니 다.히히.
구성 방식
Python 에 서 는.conf,.ini 등 다양한 형식 으로 logging 을 설정 할 수 있 습 니 다.
Django 에 서 는 logging 에 대한 설정 을 settings 에 기록 합 니 다.상응하는 배치 와 해석 은 다음 과 같다.

#     
ADMINS = (
 ('laixintao','*******@163.com'),
)
 
#    ,   404  ,    MANAGERS
SEND_BROKEN_LINK_EMAILS = True
MANAGERS = ADMINS
 
#Email  
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST= 'smtp.163.com'#QQ  SMTP   (      SMTP  )
EMAIL_PORT= 25 #QQ  SMTP    
EMAIL_HOST_USER = '**********@163.com' #      
EMAIL_HOST_PASSWORD = '**************' #   
EMAIL_SUBJECT_PREFIX = 'website' #        ,   '[django]'
EMAIL_USE_TLS = True #      
DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER #     
 
#logging    
LOGGING = {
 'version': 1,
 'disable_existing_loggers': True,
 'formatters': {#     
 'standard': {
  'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'} 
 },
 'filters': {#   
 'require_debug_false': {
  '()': 'django.utils.log.RequireDebugFalse',
  }
 },
 'handlers': {#   
 'null': {
  'level': 'DEBUG',
  'class': 'logging.NullHandler',
 },
 'mail_admins': {#         
  'level': 'ERROR',
  'class': 'django.utils.log.AdminEmailHandler',
  'filters': ['require_debug_false'],#    DEBUG = False       
  'include_html': True,
 },
 'debug': {#       (         ,     )
  'level':'DEBUG',
  'class':'logging.handlers.RotatingFileHandler',
  'filename': os.path.join(BASE_DIR, "log",'debug.log'),#      
  'maxBytes':1024*1024*5,#     
  'backupCount': 5,#    
  'formatter':'standard',#    formatters    
 },
 'console':{#      
  'level': 'DEBUG',
  'class': 'logging.StreamHandler',
  'formatter': 'standard',
 },
 },
 'loggers': {#logging   
 'django': {
  'handlers': ['console'],
  'level': 'DEBUG',
  'propagate': False 
 },
 'django.request': {
  'handlers': ['debug','mail_admins'],
  'level': 'ERROR',
  'propagate': True,
 },
 #      ALLOWED_HOSTS            
 'django.security.DisallowedHost': {
  'handlers': ['null'],
  'propagate': False,
 },
 } 
}
이상 의 프로필 에는 세 개의 로그 프로세서 가 있 습 니 다.각각:
  • 'django.request':django 의 request 발생 error 는 자동 으로 기록 되 고 debug 를 사용 하여 정 보 를 파일 에 기록 합 니 다.그리고 mailadmins 는 메 일 을 통 해 관리자 에 게 메 시 지 를 보 냅 니 다.여기 메 일의 기능 이 아주 좋아요!순수한 텍스트 정보 가 아니 라 html 파일 입 니 다.브 라 우 저 에서 본 오류 페이지 와 똑 같 습 니 다!메 일 기능 을 정상적으로 사용 하려 면 저 처럼 위의 메 일 보 내 는 사람 정 보 를 설정 해 야 합 니 다.나 는 직접 왕 이 에 가서 메 일 을 신청 했다.특히 세 가 지 를 주의해 야 한다.1.메 일 서비스 업 체 에 가서 SMTP 서 비 스 를 시작 해 야 한다.2.서로 다른 메 일 서비스 업 체 는 특별한 설정 이 있 을 수 있 습 니 다.예 를 들 어 왕 이 는 클 라 이언 트 에 게 권한 수여 코드 를 줄 것 입 니 다.이것 이 야 말로 웹 페이지 의 로그 인 비밀번호 가 아 닙 니 다.3.서비스 업 체 가 발신 빈도 에 대한 제한 이 있 는 지 주의 하 세 요.
  • 'django':console 프로 세 서 를 사용 하여 정 보 를 출력 합 니 다.개발 할 때 이 프로 세 서 를 사용 할 수 있 습 니 다.print? 너무 낮 아!)
  • 마지막 처리 장 치 는 주석 을 보십시오.
  • 마지막 으로 로그 의 경로 에 응답 할 수 있 는 권한 을 잊 지 마 세 요.예 를 들 어 Apache 2 서버 는 www-data 에 쓰기 권한 을 주어 야 합 니 다.
    
    sudo chown -R [yourname]:www-data [log]
    sudo chmod -R g+s [log]
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

    좋은 웹페이지 즐겨찾기