Maison >développement back-end >Tutoriel Python >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.pyCré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 policyRésumé : importer package.package.packageà partir du module d'importation package.package.packageChemin : Absolu : importer depuis la couche externeRelatif : 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 erreurpython3 : Le dossier d'importation (sans __init__.py) ne signalera pas d'erreurRecommandations associées : "
Tutoriel vidéo Python
"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')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')
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')
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!