Les journaux sont indispensables dans le développement de programmes. Grâce aux journaux, nous pouvons analyser où se trouvent les erreurs et quelles sont les anomalies. Il est d’une grande utilité dans les environnements de production. Dans le développement Java, des composants tiers tels que log4j et logback sont généralement utilisés. L'article suivant présente principalement les informations pertinentes sur la journalisation du module de journalisation Django. Les amis dans le besoin peuvent s'y référer.
Avant-propos
Django est très complet en termes d'informations de sortie de journal. Les informations de demande, de configuration et de rétrolien sont toutes disponibles, ce qui nous suffit. Débogué. Cependant, dans un environnement en ligne, il est très sûr si les utilisateurs sont autorisés à voir ces informations (code exposé). Par conséquent, nous devons désactiver le débogage en ligne, mais nous ne pouvons pas supprimer les informations de débogage. Cela nécessite l'utilisation du module de journalisation. Le module
logging est en fait un module de Python et dispose de nombreux supports localisés dans Django.
Comprendre Logger
Tout d'abord, vous devez comprendre le travail de journalisation. Il contient quatre éléments principaux : le formateur, le filtre et le gestionnaire de processeur. . Enregistreur d'instance de journal.
Flux de traitement
formatter logger ----> handler ----------------> files, emails filter
Le flux de traitement est comme ceci. D’abord dans le code. Ce que nous obtenons est une instance d'enregistreur, et nous utilisons cette instance pour enregistrer des informations.
# 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!')
Ensuite, l'enregistreur nommé django transmettra les informations au gestionnaire correspondant. Le gestionnaire traitera les informations à l'aide d'un formateur et d'un filtre, et soumettra le journal (l'enregistrera dans un fichier, une base de données ou. envoyer un email) .
De manière générale, le gestionnaire peut être send_email, error_file et d'autres méthodes de traitement, et le gestionnaire peut être réutilisé dans l'enregistreur. Par exemple, notre processeur Django utilise deux processeurs, send_email et error_file, et le processeur de requête utilise deux processeurs, error_file et info_file et le gestionnaire peut être compris comme une relation plusieurs-à-plusieurs, hehe.
Méthode de configuration
La journalisation peut être configurée dans différents formats en Python, tels que .conf, .ini, etc.
Dans Django, nous écrivons la configuration de la journalisation dans les paramètres. La configuration et l'explication correspondantes sont les suivantes (pour référence uniquement).
#管理员邮箱 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, }, } }
Dans le fichier de configuration ci-dessus, il y a trois processeurs de journaux. Ce sont :
'django.request' : la requête de Django enregistrera automatiquement les erreurs lorsqu'elles se produisent, puis utilisera le débogage pour enregistrer les informations dans un fichier, et mail_admins enverra les informations via email À l'administrateur. La fonctionnalité de courrier électronique ici est géniale ! Il ne s'agit pas d'un message en texte brut, mais d'un fichier HTML, exactement le même que la page d'erreur que nous voyons dans le navigateur ! Pour utiliser normalement la fonction de courrier électronique, vous devez configurer les informations ci-dessus sur l'expéditeur du courrier électronique comme je l'ai fait. Je suis allé directement sur NetEase pour demander une adresse e-mail. Portez une attention particulière à trois points : 1. Assurez-vous de vous adresser au fournisseur de services de messagerie pour activer le service SMTP ; 2. Différents fournisseurs de services de messagerie peuvent avoir des paramètres spéciaux. Par exemple, NetEase vous donnera un code d'autorisation client, qui est. le mot de passe, et ce n'est pas le mot de passe de connexion à la page Web. 3. Vérifiez si le fournisseur de services a des restrictions sur la fréquence d'envoi.
'django' : utilisez le processeur de la console pour afficher des informations. Vous pouvez utiliser ce processeur pendant le développement (Quoi ? Imprimer ? Trop faible !)
Voir le commentaire pour le dernier processeur.
Enfin, n'oubliez pas d'autoriser la réponse du chemin du journal. Par exemple, le serveur Apache2 doit accorder l'autorisation d'écriture à www-data :
sudo chown -R [yourname]:www-data [log] sudo chmod -R g+s [log]
Résumé
[Recommandations associées]
1 <.>Tutoriel vidéo gratuit Python
2.Tutoriel vidéo Python rencontre la collecte de données
3.Manuel d'apprentissage Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!