xml地图|网站地图|网站标签 [设为首页] [加入收藏]

logging模块详解

来源:http://www.ccidsi.com 作者:呼叫中心培训课程 人气:199 发布时间:2019-12-23
摘要:logging模块安详严整,logging精解   无数程序都有记录日相当多顺序皆有记录日志的要求,并且日志中包括的新闻即有平日的顺序访谈日志,还应该有错误、警示等新闻输出,python的log

logging模块安详严整,logging精解

 

无数程序都有记录日相当多顺序皆有记录日志的要求,并且日志中包括的新闻即有平日的顺序访谈日志,还应该有错误、警示等新闻输出,python的logging模块提供了行业内部的日记接口,你能够经过它存款和储蓄各类格式的日志,logging的日志能够分成 debug()info()warning()error() and critical() 5个级别,上边大家看一下怎么用。

最简便易行用法

1 2 3 4 5 6 7 8 import logging   logging.warning("user [qiduwangjue] attempted wrong password more than 3 times") logging.critical("server is down")   #输出 WARNING:root:user [qiduwangjue] attempted wrong password more than 3 times CRITICAL:root:server is down

看一下那多少个日志品级分别代表怎样看头

Level When it’s used
DEBUG Detailed information, typically of interest only when diagnosing problems.
INFO Confirmation that things are working as expected.
WARNING An indication that something unexpected happened, or indicative of some problem in the near future (e.g. ‘disk space low’). The software is still working as expected.
ERROR Due to a more serious problem, the software has not been able to perform some function.
CRITICAL A serious error, indicating that the program itself may be unable to continue running.

  

如若想把日记写到文件里,也超粗略

1 2 3 4 5 6 import logging   logging.basicConfig(filename='example.log',level=logging. INFO) logging.debug('This message should go to the log file') logging.info('So should this') logging.warning('And this, too')

当中上边那句中的level=loggin.INFO意思是,把日记纪录等级设置为INFO,也便是说,只有比日志是INFO或比INFO等第更加高的日记才会被记录到文件里,在此个事例, 第一条日志是不会被记录的,假诺希望纪录debug的日记,那把日志品级改成DEBUG就可以了。

1 logging.basicConfig(filename='example.log',level=logging.INFO)

认为方面包车型客车日志格式忘记加上岁月啦,日志不领悟时间怎么行呢,上面就来拉长!

1 2 3 4 5 6 import logging logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') logging.warning('is when this event was logged.')   #输出 12/12/2010 11:46:36 AM is when this event was logged.

日志格式

%(name)s

Logger的名字

%(levelno)s

数字形式的日志级别

%(levelname)s

文本形式的日志级别

%(pathname)s

调用日志输出函数的模块的完整路径名,可能没有

%(filename)s

调用日志输出函数的模块的文件名

%(module)s

调用日志输出函数的模块名

%(funcName)s

调用日志输出函数的函数名

%(lineno)d

调用日志输出函数的语句所在的代码行

%(created)f

当前时间,用UNIX标准的表示时间的浮 点数表示

%(relativeCreated)d

输出日志信息时的,自Logger创建以 来的毫秒数

%(asctime)s

字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(thread)d

线程ID。可能没有

%(threadName)s

线程名。可能没有

%(process)d

进程ID。可能没有

%(message)s

用户输出的消息

 

 

 

  

黄金年代旦想同一时间把log打字与印刷在荧屏和文书日志里,就须求理解一些叶影参差的知识 了

Python 使用logging模块记录日志涉及多少个主要类,使用官方文书档案中的归纳最为合适:

logger提供了应用程序可以一向接受的接口;

handler将(logger创设的卡塔尔国日志记录发送到合适的目标输出;

filter提供了细度设备来调控输出哪条日志记录;

formatter决定日志记录的末段输出格式。

logger
种种程序在出口音讯从前都要得到三个Logger。Logger常常对应了程序的模块名,举例聊天软件的图形分界面模块能够如此拿到它的Logger:
LOG=logging.getLogger(”chat.gui”)
而基本模块可以如此:
LOG=logging.getLogger(”chat.kernel”)

Logger.setLevel(lel卡塔尔:钦点最低的日志等级,低于lel的品级将被忽略。debug是最低的放松权利等第,critical为最高
Logger.addFilter(filt卡塔尔(英语:State of Qatar)、Logger.removeFilter(filt卡塔尔(قطر‎:增添或删除钦赐的filter
Logger.addHandler(hdlr卡塔尔、Logger.removeHandler(hdlr卡塔尔:增添或删除钦命的handler
Logger.debug(卡塔尔国、Logger.info(卡塔尔(قطر‎、Logger.warning(卡塔尔国、Logger.error(卡塔尔、Logger.critical(卡塔尔国:能够安装的日志等级

 

handler

handler对象担负发送有关的消息到钦定目标地。Python的日记系统有三种Handler能够接纳。某些Handler能够把音讯输出到调节台,某个Logger能够把音信输出到文件,还应该有个别Handler可以把新闻发送到网络上。要是认为远远不足用,还足以编写制定自身的Handler。能够因而addHandler(卡塔尔方法增多多少个多handler
Handler.setLevel(lel卡塔尔:钦命被管理的音信等第,低于lel等第的消息将被忽略
Handler.setFormatter(卡塔尔国:给这一个handler选拔二个格式
Handler.addFilter(filt卡塔尔国、Handler.removeFilter(filt卡塔尔国:新添或删除贰个filter对象

种种Logger能够附加四个Handler。接下来大家就来介绍部分常用的Handler:
1) logging.StreamHandler
使用那些Handler能够向相近与sys.stdout或许sys.stderr的别样公文对象(file object卡塔尔(قطر‎输出音讯。它的构造函数是:
StreamHandler([strm])
里头strm参数是叁个文书对象。暗中同意是sys.stderr

2) logging.FileHandler
和StreamHandler相似,用于向八个文书输出日志音信。可是FileHandler会帮您展开这几个文件。它的布局函数是:
FileHandler(filename[,mode])
filename是文本名,必需钦命一个文书名。
mode是文本的展开药格局。参见Python内置函数open(卡塔尔的用法。暗中同意是’a',即增加到文件末尾。

3) logging.handlers.RotatingFileHandler
那些Handler相通于地点的FileHandler,可是它能够管理文件大小。当文件达到自然大小之后,它会活动将目后日记文件改名,然后创立贰个新的同名日志文件连续失败出。比方日志文件是chat.log。当chat.log达到钦赐的大小之后,RotatingFileHandler自动把 文件改名叫chat.log.1。可是,借使chat.log.1已经存在,会先把chat.log.1重命名称为chat.log.2。。。最终重复创制chat.log,继续输出日志消息。它的布局函数是:
RotatingFileHandler( filename[, mode[, maxBytes[, backupCount]]])
其间filename和mode八个参数和FileHandler相仿。
maxBytes用于钦命日志文件的最大文件大小。即便maxBytes为0,意味着日志文件能够特别大,那个时候上边描述的重命名进程就不会发出。
backupCount用于钦定保留的备份文件的个数。例如,借使钦点为2,当上边描述的重命名过程产生时,原有的chat.log.2并不会被更名,而是被剔除。

4) logging.handlers.TimedRotatingFileHandler
以此Handler和RotatingFileHandler相仿,不过,它从未通过剖断文件大小来决定曾几何时再度创造日志文件,而是间距一准时间就 自动创造新的日记文件。重命名的历程与RotatingFileHandler肖似,可是新的文本不是外加数字,而是当前时光。它的布局函数是:
TimedRotatingFileHandler( filename [,when [,interval [,backupCount]]])
里头filename参数和backupCount参数和RotatingFileHandler具备相似的意思。
interval是光阴间隔。
when参数是多个字符串。表示时间距离的单位,不区分轻重缓急写。它有以下取值:
S 秒
M 分
H 小时
D 天
W 每星期(interval==0时期表周二)
midnight 每一天晚上

 

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import logging   #create logger logger = logging.getLogger('TEST-LOG') logger.setLevel(logging.DEBUG)     # create console handler and set level to debug ch = logging.StreamHandler() ch.setLevel(logging.DEBUG)   # create file handler and set level to warning fh = logging.FileHandler("access.log") fh.setLevel(logging.WARNING) # create formatter formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')   # add formatter to ch and fh ch.setFormatter(formatter) fh.setFormatter(formatter)   # add ch and fh to logger logger.addHandler(ch) logger.addHandler(fh)   # 'application' code logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message')

  

 

文本自动截断例子

import logging

from logging import handlers

logger = logging.getLogger(__name__)

log_file = "timelog.log"
#fh = handlers.RotatingFileHandler(filename=log_file,maxBytes=10,backupCount=3)
fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3)


formatter = logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s')

fh.setFormatter(formatter)

logger.addHandler(fh)


logger.warning("test1")
logger.warning("test12")
logger.warning("test13")
logger.warning("test14") 

 

非常多顺序都有记录日相当多顺序都有记录日志的供给,而且日志中富含的音讯即有日常的主次访问日志,还会有...

本文由68399皇家赌场发布于呼叫中心培训课程,转载请注明出处:logging模块详解

关键词: 68399皇家赌场

上一篇:Python中sort和sorted函数代码解析

下一篇:没有了

频道精选

最火资讯