Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Konfiguration des Django-Protokollmoduls
Protokolle sind in der Programmentwicklung unverzichtbar. Mithilfe von Protokollen können wir analysieren, wo die Fehler liegen und welche Auffälligkeiten vorliegen. Es ist von großem Nutzen in Produktionsumgebungen. In der Java-Entwicklung werden normalerweise Komponenten von Drittanbietern wie log4j und logback verwendet. Der folgende Artikel stellt hauptsächlich die relevanten Informationen zur Protokollierung des Django-Protokollmoduls vor. Freunde, die es benötigen, können darauf zurückgreifen.
Vorwort
Django ist in Bezug auf Protokollausgabeinformationen sehr vollständig. Die Anforderungsinformationen, die Einstellungskonfiguration und die Trackback-Informationen sind alle verfügbar, was für uns ausreichend istDebugged. In einer Online-Umgebung ist es jedoch sehr sicher, wenn Benutzer diese Informationen sehen dürfen (offengelegter Code). Daher müssen wir Debug online deaktivieren, können die Debugging-Informationen jedoch nicht wegwerfen. Dies erfordert die Verwendung des Protokollierungsmoduls. Das
Logging-Modul ist eigentlich ein Modul von Python und bietet viel lokalisierte Unterstützung in Django.
Logger verstehen
Zunächst müssen Sie die Arbeit der Protokollierung verstehen. Es gibt vier Hauptelemente darin: Formatierer, Filter und Prozessor-Handler . Log-Instanz-Logger.
Verarbeitungsablauf
formatter logger ----> handler ----------------> files, emails filter
Der Verarbeitungsablauf ist wie folgt. Erstens im Code. Was wir erhalten, ist eine Logger-Instanz, und wir verwenden diese Instanz, um Informationen aufzuzeichnen.
# 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!')
Dann übergibt der Logger namens Django die Informationen an den entsprechenden Handler. Der Handler verarbeitet die Informationen mithilfe von Formatierer und Filter und übermittelt das Protokoll (speichert es in einer Datei, Datenbank usw.). eine E-Mail senden).
Im Allgemeinen kann der Handler send_email, error_file und andere Verarbeitungsmethoden sein und der Handler kann im Logger wiederverwendet werden. Beispielsweise verwendet unser Django-Prozessor zwei Prozessoren, send_email und error_file, und der Anforderungsprozessor verwendet zwei Prozessoren, error_file und info_file. Logger und Handler können als Viele-zu-Viele-Beziehung verstanden werden, hehe.
Konfigurationsmethode
Die Protokollierung kann in verschiedenen Formaten in Python konfiguriert werden, z. B. .conf, .ini usw.
In Django schreiben wir die Protokollierungskonfiguration in die Einstellungen. Die entsprechende Konfiguration und Erklärung lauten wie folgt (nur als Referenz).
#管理员邮箱 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, }, } }
In der obigen Konfigurationsdatei gibt es drei Protokollprozessoren. Dies sind:
'django.request': Djangos Anfrage zeichnet Fehler automatisch auf, wenn sie auftreten, und verwendet dann Debug, um die Informationen in einer Datei aufzuzeichnen, und mail_admins sendet die Informationen weiter E-Mail An den Administrator. Die E-Mail-Funktionalität hier ist großartig! Es handelt sich nicht um eine reine Textnachricht, sondern um eine HTML-Datei, genau wie die Fehlerseite, die wir im Browser sehen! Um die E-Mail-Funktion normal nutzen zu können, müssen Sie die oben genannten E-Mail-Absenderinformationen wie ich konfigurieren. Ich bin direkt zu NetEase gegangen, um eine E-Mail-Adresse zu beantragen. Achten Sie besonders auf drei Punkte: 1. Gehen Sie unbedingt zum E-Mail-Dienstanbieter, um den SMTP-Dienst zu aktivieren. 2. Verschiedene E-Mail-Dienstanbieter können einige spezielle Einstellungen haben. NetEase gibt Ihnen beispielsweise einen Client-Autorisierungscode das Passwort und es ist nicht das Login-Passwort für die Webseite. 3. Achten Sie darauf, ob der Dienstanbieter Einschränkungen hinsichtlich der Sendehäufigkeit hat.
‘django‘: Verwenden Sie den Konsolenprozessor, um Informationen auszugeben. Sie können diesen Prozessor während der Entwicklung verwenden (Was? Drucken? Zu niedrig!)
Siehe den Kommentar für den letzten Prozessor.
Vergessen Sie abschließend nicht, der Protokollpfadantwort die Erlaubnis zu erteilen. Für den Apache2-Server müssen Sie beispielsweise die Schreibberechtigung für WWW-Daten erteilen:
sudo chown -R [yourname]:www-data [log] sudo chmod -R g+s [log]
Zusammenfassung
[Verwandte Empfehlungen]
1 . Python kostenloses Video-Tutorial
Python trifft auf Datenerfassungs-Video-Tutorial
3.Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Konfiguration des Django-Protokollmoduls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!