logging fournit une api pratique pour configurer les enregistreurs. Le logger sera responsable du traitement des messages du journal et de leur écriture dans un fichier ou une console :
import logging # 创建一个名为 "my_logger" 的日志记录器 logger = logging.getLogger("my_logger") # 设置日志级别为 DEBUG,表示要记录所有级别的日志消息 logger.setLevel(logging.DEBUG)
Pour enregistrer un message de journal, utilisez la méthode debug()
, info()
, warning()
, error()
或 critical()
fournie par l'enregistreur. Chaque méthode correspond à un niveau de log différent :
logger.debug("这是 debug 消息") logger.info("这是 info 消息") logger.warning("这是 warning 消息") logger.error("这是 error 消息") logger.critical("这是 critical 消息")
Par défaut, le module de journalisation utilise un format de journal simple, comprenant le niveau de journalisation, l'horodatage et le message. Vous pouvez personnaliser le format du journal pour inclure des informations supplémentaires telles que le nom de la fonction, le numéro de ligne ou l'ID du processus :
# 使用 %(asctime)s、%(levelname)s 和 %(message)s 占位符自定义日志格式 fORMatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") # 将格式器添加到日志记录器 logger.addHandler(logging.StreamHandler()) logger.addHandler(logging.FileHandler("my_log.log"))
Le module de journalisation prend en charge les hiérarchies de journaux dans lesquelles les enregistreurs peuvent avoir des parents et des enfants. L'enregistreur parent enregistrera tous les messages dans l'enregistreur enfant :
# 创建一个名为 "parent_logger" 的父级日志记录器 parent_logger = logging.getLogger("parent_logger") # 创建一个名为 "child_logger" 的子级日志记录器 child_logger = logging.getLogger("parent_logger.child_logger") # 设置子级日志记录器的日志级别为 INFO,表示仅记录 info 和更高级别的消息 child_logger.setLevel(logging.INFO) # 父级日志记录器中的消息将传播到子级日志记录器 parent_logger.info("父级日志记录器消息") child_logger.info("子级日志记录器消息")
Vous pouvez utiliser des filtres de journal pour contrôler quels messages de journal sont enregistrés ou propagés. Les filtres peuvent être basés sur le niveau de journalisation, le contenu du message ou d'autres propriétés :
# 创建一个过滤器,仅允许记录 error 级别及以上的消息 filter = logging.Filter() filter.filter = lambda record: record.levelno >= logging.ERROR # 将过滤器添加到日志记录器 logger.addFilter(filter)
La rotation des journaux peut gérer et diviser automatiquement les fichiers journaux lorsqu'ils deviennent trop volumineux. Vous pouvez définir une taille maximale de fichier journal ou conserver un certain nombre de fichiers journaux :
# 使用 RotatingFileHandler 设置日志轮转,最大日志文件大小为 10MB handler = logging.handlers.RotatingFileHandler("my_log.log", maxBytes=10240000) # 将处理程序添加到日志记录器 logger.addHandler(handler)
Le module de journalisation vous permet de créer vos propres gestionnaires de journaux, offrant une plus grande flexibilité. Vous pouvez utiliser <code><strong class="keylink">Socket</strong>Handler
将日志消息发送到远程服务器,或使用 TimedRotatingFileHandler
Socket
TimedRotatingFileHandler
pour faire pivoter les fichiers journaux en fonction d'intervalles de temps plutôt que de la taille du fichier :
# 创建一个自定义日志句柄,将日志消息发送到远程服务器 handler = logging.handlers.SocketHandler("localhost", 1234) # 将处理程序添加到日志记录器 logger.addHandler(handler)
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!