python之-- logging模块

logging模块功能:提供了标准的日志接口,可以通过它存储各种格式的日志。日志5个级别分:debug(),info(),warning(),error(),critical()

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.WARNINGstream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

简单示例:5种日志打印和顺序import logginglogging.debug(‘mess‘)logging.info(‘mess‘)logging.warning(‘user warnning log info‘)logging.error(‘error‘)logging.critical(‘server is down‘)输出critical的日志如下:CRITICAL:root:server is down
举例:日志记录到文件中

1 import logging
2 #打开记录日志文件并设定日志写入级别为info以上,设定日志文件格式,开头是时间,然后是日志信息
3 logging.basicConfig(filename=‘example.log‘,
4                     level=logging.INFO,
5                     format=‘%(asctime)s %(levelname)s %(message)s‘,
6                     datefmt=‘%m%d%Y %I:%M:%S %p‘)
7 logging.info(‘mess‘)
8 logging.warning(‘warning‘)

logging模块记录日志涉及4个类:1:logger提供了应用程序可以直接使用的接口2:handler将(logger创建的)日志记录发送到合适的目的输出。3:filter提供了细度设备来决定输出哪条日志记录4:formatter决定日志记录的最终输出格式。另:logging 有2种方式可以切割日志(根据时间 或者 根据大小 )logger:每个程序在输出信息之前都要获得一个logger,logger通常对应了程序的模块名。如:LOG = logging.getLogger(‘access.log‘)而核心模块可以这样:LOG = logging.getLogger(‘chat.kernel‘)Logger.setLevel(lel):指定最低的日志级别,低于lel的级别将被忽略。debug为最低,critical为最高。Logger.addFilter(filt),Logger.removeFilter(filt):添加或删除指定的filterLogger.addHandler(hdlr),Logger.removeHandler(hdlr):添加或删除指定的handlerLogger.debug(),Logger.Info(),Logger.Warning(),Logger.error(),Logger.critical() 为可以设定的日志级别。

handler:负责把信息发送到指定的目的地,如:控制台,文件,网络或者编写自己的handler。通过addHandler()添加多个handlerHandler.setLevel(lel):指定被处理的信息级别,低于lel级别的被忽略。Handler.setFormatter():给一个handler选择一个格式。Handler.addFilter(filt),Handler.removeFilter(filt):新增/删除一个filter对象。以下为常用的handler:1:logging.StreamHandler:就是屏幕输出2:logging.FileHandler:输出到文件3:logging.handlers.RotatingFileHandler:可以管理文件大小,当达到指定大小后,会自动对当前文件改名。改为:文件名.1,.2,.3这样    格式为:RotatingFileHandler(filename[,mode[,maxBytes[,backupCount]]])    参数:maxBytes 是文件大小,0为无限大。backupCount:保留的备份文件个数。4:logging.handlers.TimeRotatingFileHandler:按照时间切割日志    格式为:TimeRotatingFileHandler(filename,[,when[,interval[,backupCount]]])    参数:interval 时间间隔          when 是个字符串,时间间隔的单位有(S秒,M分,H小时,D天,W星期,midnight每天凌晨)日志基本流程图

举例:实现日志的屏幕和文件输出

 1 import logging
 2 #自定义日志名字test-log
 3 logger = logging.getLogger(‘test-log‘)
 4 #设置最低日志级别DEBUG
 5 logger.setLevel(logging.DEBUG)
 6
 7 #添加一个handler到屏幕输出
 8 ch = logging.StreamHandler()
 9 #屏幕输出自定义级别为WARNING
10 ch.setLevel(logging.WARNING)
11
12 #在添加一个handler输出到文件
13 fh = logging.FileHandler(‘access.log‘,encoding=‘utf-8‘)
14 fh.setLevel(logging.ERROR)
15
16 # 在定义日志输出的格式(这个定义为到文件格式)
17 fh_formatter = logging.Formatter(‘%(asctime)s%(process)d %(filename)s - %(levelname)s - %(message)s‘)
18 # 这个定义为屏幕打印格式
19 ch_formatter = logging.Formatter(‘%(asctime)s, - %(name)s - %(levelname)s - %(message)s‘)
20
21 #接下来将自定义的日志格式和handler关联起来
22 #关联文件handler
23 fh.setFormatter(fh_formatter)
24 #关联屏幕handler
25 ch.setFormatter(ch_formatter)
26
27 #最后将定义好的handler关联到logger,日志通过logger输出
28 logger.addHandler(fh)
29 logger.addHandler(ch)
30
31 #到现在,就可以做输出日志进行测试
32 logger.debug(‘debug message‘)
33 logger.info(‘info message‘)
34 logger.warning(‘warning message‘)
35 logger.error(‘error message‘)
36 logger.critical(‘critical message‘)

举例:按照文件大小或者时间切割日志

 1 import logging
 2 from logging import handlers
 3 logger = logging.getLogger(__name__)
 4 log_file = ‘logname.log‘
 5 #按照文件大小切割日志
 6 # fh = handlers.RotatingFileHandler(filename=log_file,maxBytes=10,backupCount=3,encoding=‘utf-8‘)
 7 #按照文件时间切割日志,这里的 ‘S‘ 表示秒
 8 # fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3,encoding=‘utf-8‘)
 9
10 formatter = logging.Formatter(‘%(asctime)s %(module)s %(message)s‘)
11 fh.setFormatter(formatter)
12 logger.addHandler(fh)

时间: 2024-10-12 15:18:19

python之-- logging模块的相关文章

python的logging模块

1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') 屏幕上打印: WARNING:root:Thisis warning message 默认情况下,logging将日志打印到屏幕,日志级别为WARNING: 日志级别大小关系为:CRITICAL > ER

python之logging模块的使用

python的logging模块是用来写日志的,是python的标准模块. logging的结构 查看logging的python源码,可知主要有四个类实现功能: Loggers:提供应用程序直接使用的接口,如相关的配置设置: Handlers:将Loggers产生的日志传到指定位置,设置日志保存的位置: Filters:对输出日志进行过滤操作: Formatters:控制日志的输出格式: 日志记录的级别 DEBUG:优先级10,记录调试的详细信息,只在调试时开启: INFO:优先级20,记录普

Python基础-----logging模块

#!/usr/bin/env python#-*- coding:utf-8 -*- ########################################################################################################################################################灵活配置日志级别,日志格式,输出位置#####################################

python使用logging模块方法 教程

logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息:print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据:logging则可以由开发者决定将信息输出到什么地方,以及怎么输出: logging模块的日志级别 logging模块默认定义了以下几个日志等级,它允许开发人员自定义其他日

Python中logging模块的基本用法

在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 怎样进行日志记录相关配置 日志记录使用常见误区 下面我们来梳理一下整个演讲的过程,其实其核心就是介绍了 logging 模块的使用方法和一些配置. 日志记录的重要性 在开发过程中,如果程序运行出现了问题,我们是可以使用我们自己的 Debug 工具来检测到到底是哪一步出现了问题,如果出现了问题的话,

python中logging模块的使用

一.基本用法 只需要基本的配置,就可以使用了. import logging def fun2(): logging.basicConfig(filename="fun2.log",format="%(asctime)s %(message)s",level=logging.DEBUG) logging.debug("this is fun2 log") 二.进行详细配置 首先添加一个fileHandler来配置记录的文件,Formatter来设

python的logging模块详解

日志级别 >>>import logging >>>logging.NOTSET 0 >>>logging.DEBUG 10 >>>logging.INFO 20 >>>logging.WARN 30 >>>logging.ERROR 40 >>>logging.CRITICAL 50 >>>logging._levelNames {0:'NOTSET', 10:

python之logging模块使用

#!/usr/bin/env python # encoding: utf-8 import logging #定义handler的输出格式 formatter=logging.Formatter('%(asctime)s--%(name)s--%(filename)s--%(message)s') #创建一个handler,用于写入日志文件,只输出debug级别以上的日志 fh=logging.FileHandler('test.log') fh.setFormatter(formatter)

使用python的logging模块

一.从一个使用场景开始 开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件 Python代码   import logging # 创建一个logger logger = logging.getLogger('mylogger') logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件 fh = logging.FileHandler('test.log') fh.setLevel(logging.DEBUG) # 再创建一个han

Python的logging模块、os模块、commands模块与sys模块

一.logging模块 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 > ERR