Maison > développement back-end > Tutoriel Python > Explication détaillée de la configuration du module de journalisation de Django

Explication détaillée de la configuration du module de journalisation de Django

Y2J
Libérer: 2017-05-10 11:46:39
original
2728 Les gens l'ont consulté

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
Copier après la connexion

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!')
Copier après la connexion

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,
 },
 } 
}
Copier après la connexion

Dans le fichier de configuration ci-dessus, il y a trois processeurs de journaux. Ce sont :

  1. '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.

  2. 'django' : utilisez le processeur de la console pour afficher des informations. Vous pouvez utiliser ce processeur pendant le développement (Quoi ? Imprimer ? Trop faible !)

  3. 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]
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal