Maison développement back-end Tutoriel Python python模块学习logging

python模块学习logging

Dec 17, 2016 pm 04:47 PM

1.简单的将日志打印到屏幕

import logging

logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')



屏幕上打印:
WARNING:root:This is warning message

默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。

2.通过logging.basicConfig函数对日志的输出格式及方式做相关配置

import logging

logging.basicConfig(level=logging.DEBUG,
               format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
               datefmt='%a, %d %b %Y %H:%M:%S',
               filename='myapp.log',
               filemode='w')
   
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')



./myapp.log文件中内容为:
Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message

logging.basicConfig函数各参数:
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(PRocess)d: 打印进程ID
%(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

3.将日志同时输出到文件和屏幕

import logging

logging.basicConfig(level=logging.DEBUG,
               format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
               datefmt='%a, %d %b %Y %H:%M:%S',
               filename='myapp.log',
               filemode='w')##################################################################################################定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象#console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)#################################################################################################

logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')



屏幕上打印:
root        : INFO     This is info message
root        : WARNING  This is warning message

./myapp.log文件中内容为:
Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message

4.logging之日志回滚

import loggingfrom logging.handlers import RotatingFileHandler##################################################################################################定义一个RotatingFileHandler,最多备份5个日志文件,每个日志文件最大10MRthandler = RotatingFileHandler('myapp.log', maxBytes=10*1024*1024,backupCount=5)
Rthandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger('').addHandler(Rthandler)################################################################################################

从上例和本例可以看出,logging有一个日志处理的主对象,其它处理方式都是通过addHandler添加进去的。
logging的几种handle方式如下:

logging.StreamHandler: 日志输出到流,可以是sys.stderr、sys.stdout或者文件 logging.FileHandler: 日志输出到文件

日志回滚方式,实际使用时用RotatingFileHandler和TimedRotatingFileHandler logging.handlers.BaseRotatingHandler logging.handlers.RotatingFileHandler logging.handlers.TimedRotatingFileHandler

logging.handlers.SocketHandler: 远程输出日志到TCP/ip sockets

logging.handlers.DatagramHandler: 远程输出日志到UDP sockets

logging.handlers.SMTPHandler: 远程输出日志到邮件地址

logging.handlers.SysLogHandler: 日志输出到syslog

logging.handlers.NTEventLogHandler: 远程输出日志到Windows NT/2000/XP的事件日志

logging.handlers.MemoryHandler: 日志输出到内存中的制定buffer

logging.handlers.HTTPHandler: 通过"GET"或"POST"远程输出到HTTP服务器

 

由于StreamHandler和FileHandler是常用的日志处理方式,所以直接包含在logging模块中,而其他方式则包含在logging.handlers模块中,
上述其它处理方式的使用请参见python2.5手册!

5.通过logging.config模块配置日志

#logger.conf

############################################### [loggers]
keys=root,example01,example02

[logger_root]
level=DEBUG
handlers=hand01,hand02

[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0

[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0
############################################### [handlers]
keys=hand01,hand02,hand03

[handler_hand01]

class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)

[handler_hand02]class=FileHandler
level=DEBUG
formatter=form01
args=('myapp.log', 'a')

[handler_hand03]class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=('myapp.log', 'a', 10*1024*1024, 5)
############################################### [formatters]
keys=form01,form02

[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S

[formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt=
import loggingimport logging.config

logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example01")

logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')
import loggingimport logging.config

logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example02")

logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')

6.logging是线程安全的

 以上就是python模块学习logging的内容,更多相关文章请关注PHP中文网(m.sbmmt.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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser la journalisation intégrée de Python Comment utiliser la journalisation intégrée de Python May 10, 2023 am 10:55 AM

La fonction principale de la journalisation est de fournir des interfaces de journalisation et de nombreux modules de traitement permettant aux utilisateurs de stocker les journaux dans différents formats afin de faciliter le débogage des programmes ou d'enregistrer les informations de sortie pendant l'exécution du programme. Niveau de journalisation Le niveau de journalisation est divisé en cinq niveaux. Les priorités, de haut en bas, sont : **CRITICAL ; **Erreur de programme grave**ERROR;**Erreur de programme/erreur de fonction partielle**AVERTISSEMENT;**Le programme a Possibilité d'erreurs **INFO;** Informations lorsque le programme fonctionne normalement. Informations de débogage du programme DEBUG Le niveau d'enregistrement du journal par défaut est AVERTISSEMENT, c'est-à-dire qu'il ne sera enregistré que lorsque le niveau de journal est supérieur ou égal à AVERTISSEMENT. Enregistrements couramment utilisés, etc.

Comment résoudre l'erreur Impossible de lire le module Python ? Comment résoudre l'erreur Impossible de lire le module Python ? Jun 24, 2023 am 11:48 AM

Lors de l’écriture de code Python, nous devons souvent importer des modules externes. Mais parfois, il y aura une erreur indiquant que le module ne peut pas être lu, ce qui entrave notre processus de programmation. Ces erreurs ont généralement les situations et solutions suivantes. Le module n'est pas installé ou n'est pas ajouté au chemin système Lorsque nous importons un module, Python recherche le module dans le chemin système. Si le module n'est pas installé ou ajouté au chemin système, une erreur illisible se produira. La solution est la suivante : (1) Confirmez si le module a été installé. Nous pouvons entrer dans l'interface de ligne de commande

Comment le module de journalisation de Python fournit-il un cadre flexible pour émettre des messages de journal? Comment le module de journalisation de Python fournit-il un cadre flexible pour émettre des messages de journal? Jun 05, 2025 am 12:13 AM

Le module de journalisation de Python fournit des capacités de journalisation flexibles à travers les niveaux de journal, les processeurs, la mise en forme et les journalistes hiérarchiques. Il prend en charge cinq niveaux de journal (débogage, informations, avertissement, erreur, critique), permettant aux développeurs de classer les informations en fonction de la gravité et de contrôler le contenu de sortie en définissant un niveau global; Par exemple, seuls les journaux d'avertissement et supérieurs sont affichés dans les environnements de production pour rester simple. De plus, les journaux peuvent être envoyés à différentes cibles, telles que les fichiers, les courriers ou les consoles en ajoutant plusieurs processeurs, chaque processeur peut configurer indépendamment les niveaux et les formats; Par exemple, un processeur écrit tous les journaux de débogage et supérieurs à un fichier, et l'autre affiche WA uniquement dans la console

Comment gérer le module de journalisation JDK sous-jacent Java Comment gérer le module de journalisation JDK sous-jacent Java May 10, 2023 pm 02:55 PM

À partir de l'exemple, l'utilisation de JDKLogging est très simple. Comme le montre le code suivant, vous pouvez d'abord utiliser la méthode statique getLogger de la classe Logger pour obtenir un enregistreur, puis vous pouvez utiliser l'enregistreur obtenu pour la saisie du journal n'importe où. Par exemple, des appels comme logger.info("Mainrunning."). packagecom.bes.logging;importjava.util.logging.Level;importjava.util.logging.Logger;publicclassLoggerTest{pr

Comment utiliser la bibliothèque de journalisation de Python Comment utiliser la bibliothèque de journalisation de Python May 16, 2023 pm 06:07 PM

Logging est un module de la bibliothèque standard Python pour la journalisation. Il fournit un moyen simple mais flexible d'enregistrer des événements dans votre programme pour un débogage et une analyse ultérieurs. Les étapes de base pour utiliser la bibliothèque de journalisation sont les suivantes : importer la bibliothèque de journalisation importlogging configuration logger logging.basicConfig(level=logging.INFO,format='%(asctime)s-%(name)s-%(levelname)s-% (message )s')Le code ci-dessus configure un enregistreur de base, spécifiant le niveau de journalisation

Comment résoudre l'erreur de module Python non installé ? Comment résoudre l'erreur de module Python non installé ? Jun 25, 2023 pm 05:52 PM

Python est un langage de programmation puissant couramment utilisé dans des domaines tels que l'analyse de données, l'apprentissage automatique et le développement Web. Lors de l'utilisation de Python, nous devons souvent utiliser divers modules tiers pour étendre les fonctions de Python. Cependant, si nous rencontrons une erreur « module non installé » lors de l'utilisation de Python, cela affectera notre efficacité de travail et la progression du développement. Cet article explique comment résoudre l'erreur de module non installé de Python. L'installation de pippip est le propre gestionnaire de paquets de Python, qui peut être facilement

Quel module est couramment utilisé pour créer des tableaux dans Python? Quel module est couramment utilisé pour créer des tableaux dans Python? May 05, 2025 am 12:02 AM

ThemostComMonlyUsedModuleforCreatingArraysInpyThonisNumpy.1) numpyprovidesefficientToolsforArrayoperations, IdealFornumericalData.2) ArraysCanBecatedUsingNp.Array () For1dand2Dstructures.3)

Que sont les modules en Python ? Que sont les modules en Python ? Jun 05, 2023 pm 01:51 PM

Python est un langage de programmation très populaire et de nombreuses personnes l'apprennent et l'utilisent. En Python, les modules sont un concept très important. Alors, que sont les modules en Python ? Pourquoi devons-nous utiliser des modules ? Répondons à ces questions en détail ci-dessous. 1. Qu'est-ce qu'un module en Python ? En Python, chaque fichier peut être considéré comme un module. Les modules contiennent des fonctions et des données associées qui peuvent être importées et utilisées dans d'autres programmes Python. Python

See all articles