Maison > développement back-end > Tutoriel Python > Introduction aux packages Python et à la journalisation

Introduction aux packages Python et à la journalisation

爱喝马黛茶的安东尼
Libérer: 2019-08-08 17:55:18
avant
2286 Les gens l'ont consulté

Introduction aux packages Python et à la journalisation

Package Python et journalisation

1. : Un package avec un fichier __init__.py dans un dossier permet de gérer plusieurs modules

La structure du package est la suivante :

bake            
    ├── __init__.py       
    ├── api               
        ├── __init__.py
        ├── policy.py
        └── versions.py
  ├── cmd             
    ├── __init__.py
    └── manage.py
  └── db                
      ├── __init__.py
      └── models.py
Copier après la connexion

Créer un test.py au même niveau que bake Import Policy.py :

import bake.api.policy
bake.api.policy.get()
#导入的名字太长了,可以起别名
import bake.api.policy as p
p.get()
#from 导入在__init__.py修改
from . import policy
#我们需要在policy文件中向sys.path添加了当前的路径
import os
import sys
sys.path.insert(os.path.dirname(__file__))
#print(__file__)查看一下
#使用__all__,在__init__.py中
__all__ = ["policy"]
#或
from . import policy
Copier après la connexion

Résumé :

importer package.package.package

à partir du module d'importation package.package.package

Chemin :

Absolu : importer depuis la couche externe

Relatif : importer depuis le courant (.) ou depuis le parent (..)

Lors de l'utilisation de chemins relatifs, ils doivent être à la fin du package Couche externe et même niveau

de l'importation du package *

doit être fait dans __init__.py

python2 : dossier d'importation (sans __init__.py) signalera une erreur

python3 : Le dossier d'importation (sans __init__.py) ne signalera pas d'erreur

Recommandations associées : "

Tutoriel vidéo Python

"

2, module de journalisation

Le module de journalisation est utilisé pour enregistrer divers statuts du logiciel, les enregistrements de transactions, les enregistrements d'erreurs, les enregistrements de connexion...

1. Configuration fonctionnelle simple :

import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
Copier après la connexion
Par défaut, le module de journalisation de Python imprime les journaux sur la sortie standard et affiche uniquement les journaux supérieurs ou égaux au niveau AVERTISSEMENT, ce qui prouve que le niveau par défaut est AVERTISSEMENT.

niveau de journal : CRITIQUE > ERREUR > AVERTISSEMENT > DEBUG

2. 🎜>

peut uniquement Les journaux d'écriture ne peuvent pas être affichés sur l'écran public

import logging
logging.basicConfig(level = logging.DEBUG,
                    format = '%(astime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt = '%Y-%m-%d %H:%M:%S',
                    filename = 'test.log',
                    filemode = 'a')
dic = {"key":123}
logging.debug(dic)
num = 100
logging.info(f"用户余额:{num - 50}")
try:
    num = int(input("请输入数字:"))
except Exception as e:
    logging.warning("e")
logging.error('error message')
logging.critical('critical message')
Copier après la connexion

la fonction basicConfig() peut utiliser des paramètres spécifiques pour modifier le comportement par défaut du module de journalisation. sont :

filename: use Crée un FiledHandler avec le nom de fichier spécifié afin que le journal soit stocké dans le fichier spécifié. filemode : mode d'ouverture de fichier, ce paramètre est utilisé lorsque le nom de fichier est spécifié. La valeur par défaut est "a" et peut également être spécifiée comme "w".

format : Spécifiez le format d'affichage du journal utilisé par le gestionnaire.

datefmt : Spécifiez le format de la date et de l'heure.

level : définir le niveau de journalisation.

stream : créer un StreamHandler avec le flux spécifié. Vous pouvez spécifier la sortie dans

sys.stderr, sys.stdout ou file (f=open('test.log','w')), la valeur par défaut est sys.stderr. Si les paramètres de nom de fichier et de flux sont répertoriés, le paramètre de flux sera ignoré.

Chaîne de format pouvant être utilisée dans le paramètre de format :

%(name)s Nom de l'enregistreur %(levelno)s forme numérique Log level

%(levelname)s Niveau de journalisation sous forme de texte

%(pathname)s Le chemin complet du module qui appelle la fonction de sortie de journal, il peut n'y avoir aucun

% (filename)s Le nom de fichier du module qui appelle la fonction de sortie de journal

%(module)s Le nom du module qui appelle la fonction de sortie de journal

%(funcName)s Le nom de la fonction qui appelle la fonction de sortie de journal

%(lineno)d La ligne de code où se trouve l'instruction qui appelle la fonction de sortie de journal

%(created)f L'heure actuelle, représentée par un nombre à virgule flottante standard UNIX représentant l'heure

%(relativeCreated)d Le nombre de millisecondes depuis la création du Logger lors de la sortie des informations du journal

%(asctime)s L'heure actuelle sous la forme d'une chaîne. Le format par défaut est "2003-07-08 16:49:45,896". Ce qui suit la virgule correspond aux millisecondes

%(thread)d ID de thread. Il se peut qu'il n'y ait aucun nom de fil de discussion

%(threadName)s. Il se peut qu’il n’y ait pas d’ID de processus

%(process)d. Il se peut qu'aucun message ne soit émis par

%(message)s utilisateurs

Configuration de l'objet 3.logger (version moyenne)

import logging
logger = logging.getLogger()
# 创建一个logger
fh = logging.FileHandler('test.log',mode="a",encoding='utf-8')   # 文件
ch = logging.StreamHandler()   # 屏幕
formatter = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - [line:%(lineno)d] -  %(levelname)s - 
%(message)s')
# 将屏幕和文件都是用以上格式
logger.setLevel(logging.DEBUG)
# 设置记录级别
fh.setFormatter(formatter)
# 使用自定义的格式化内容
ch.setFormatter(formatter)
logger.addHandler(fh) #logger对象可以添加多个fh和ch对象
logger.addHandler(ch)
logger.debug('logger debug message')
logger.info('logger info message')
logger.warning('logger warning message')
logger.error('logger error message')
logger.critical('logger critical message')
Copier après la connexion

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:cnblogs.com
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