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,
},
}
}
이상 의 프로필 에는 세 개의 로그 프로세서 가 있 습 니 다.각각:
sudo chown -R [yourname]:www-data [log]
sudo chmod -R g+s [log]
총결산이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.