日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Python中logging.config配置文件解读

發(fā)布時(shí)間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中logging.config配置文件解读 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Python中l(wèi)ogging.config配置文件解讀


下面的函數(shù)用于配置logging模塊,它們位于logging.config模塊中。你可以使用這些函數(shù)來配置,也可以在logging或是logging.handlers中聲明它們來配置。
logging.config.dictConfig(config)
? ?從dictionary中獲取logging配置
logging.config.fileConfig(fname, defaults=None, disable_existing_loggers=True)
? ?從指定的fname的配置文件中讀取logging配置文件,文件格式參見
? ?https://docs.python.org/2/library/logging.config.html#logging-config-fileformat
? ?該函數(shù)可以在應(yīng)用程序中多次調(diào)用
logging.config.listen(port=DEFAULT_LOGGING_CONFIG_PORT)
在指定端口啟動(dòng)socket server并偵聽新配置
logging.config.stopListening()
? ? 關(guān)閉先前正在偵聽的server

Configuration file format
被fileConfiguration()所理解的配置文件格式基于configparser功能。配置文件必須包含[loggers], [handlers]和[formatters],它們分別代表日志文件中定義的每種類型的實(shí)體。對(duì)這3種實(shí)體,后面有一個(gè)單獨(dú)的section來定義該實(shí)體如何配置。
因此,[loggers]節(jié)中名為log01的logger,相關(guān)的配置文件細(xì)節(jié)在[logger_log01]節(jié)中定義。類似地,[handlers]節(jié)中名為
hand01的handler將在[handler_hand01]節(jié)中聲明,[formatters]節(jié)中的form01將在[formatter_form01]聲明。root logger配置必須在[logger_root]節(jié)聲明。
注意:fileConfig() API比dictConfig()舊,并不包含logging某些方面的功能。建議以后盡量使用dictConfig API。
配置文件的例子如下:
[loggers]
keys=root,log02,log03,log04,log05,log06,log07


[handlers]
keys=hand01,hand02,hand03,hand04,hand05,hand06,hand07,hand08,hand09


[formatters]
keys=form01,form02,form03,form04,form05,form06,form07,form08,form09


root logger必須指定一個(gè)級(jí)別和handlers列表。示例如下:
[logger_root]
level=NOTSET
handlers=hand01
其中l(wèi)evel可以是DEBUG, INFO, WARNING, ERROR, CRITICAL or NOTSET之一,僅對(duì)root logger來說,NOTSET意味著所有的log message
都會(huì)記錄。對(duì)非root的logger,強(qiáng)制要求一些額外信息,比如
[logger_parser]
level=DEBUG
handlers=hand01
propagate=1
qualname=compiler.parser
當(dāng)一個(gè)非root的logger中l(wèi)evel被配置為NOSET,它將通過上一級(jí)的logger來確定當(dāng)前l(fā)ogger的有效級(jí)別。propagete為1表示message必須傳播到上一級(jí)logger中,為0表示不傳。qualname表示該logger的層級(jí)channel名稱,這就是說,應(yīng)用程序使用該名稱可以得到該logger對(duì)象。
handler類型很多,主要有StreamHandler,FileHandler,NullHandler,SysLogHandler,HTTPHandler等,詳見
https://docs.python.org/2/library/logging.handlers.html#module-logging.handlers


handler節(jié)對(duì)應(yīng)的配置示例如下:
[handler_hand01]
class=StreamHandler
level=NOTSET
formatter=form01
args=(sys.stdout,)


class表示該handler在logging包命名空間中的類名,level表示logger的級(jí)別,NONSET表示要記錄所有日志。
formatter表示該handler的formatter的鍵名,假如空白的話,就使用默認(rèn)值logging._defaultFormatter。假如formatter指定了該名字,必須在對(duì)應(yīng)的section聲明。args字段是handler類的構(gòu)造函數(shù)的變量列表,參考相關(guān)handler構(gòu)造函數(shù),或者下面的例子,去觀察通常的元素是如何構(gòu)造的。比如:
[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form02
args=('python.log', 'w')


下面是formatter的配置
[formatter_form01]
format=F1 %(asctime)s %(levelname)s %(message)s
datefmt=
class=logging.Formatter
format字段是全局格式字符串,datefmt是strftime()兼容的date/time格式字符串,為空時(shí)使用默認(rèn)的ISO8601格式,比如2003-01-23 00:29:50,411,class字段表示formatter的類名,


日志級(jí)別如下:
Level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0


logging.handlers解讀

logging模塊中定義了這3個(gè)handler:StreamHandler, FileHandler and NullHandler
其它的handler都在logging.handler中定義,一并說明如下:
StreamHandler
該類位于logging包,將logging output輸出到流中,比如sys.stdout,sys.stderr或任何支持write()和flush()方法的類文件對(duì)象
class logging.StreamHandler(stream=None)
假如指定了stream名稱,日志將輸出到流實(shí)例中,否則,日志輸出到sys.stderr

FileHandler
該類位于logging包,將logging output輸出到磁盤文件中,文件默認(rèn)無限增長(zhǎng)
class logging.FileHandler(filename, mode='a', encoding=None, delay=False)
打開指定的文件并記錄日志,假如mode沒有設(shè)置,默認(rèn)使用'a'表示追加日志到文件中。


NullHandler
該對(duì)象什么也不處理


WatchedFileHandler
一個(gè)FileHandler實(shí)例,監(jiān)視日志文件的變化,假如文件變化了,它會(huì)關(guān)閉并重新打開,不建議在Windows下使用
文件的變化可以發(fā)生,當(dāng)應(yīng)用程序使用newsyslog和logrotate來實(shí)現(xiàn)日志文件的回滾時(shí)。這個(gè)handle是在Unix/Linux下面,監(jiān)視文件是否改變。(一個(gè)文件認(rèn)為改變了,假如它的device厚實(shí)inode已經(jīng)改變),將舊的文件關(guān)閉,這個(gè)流打開。
class logging.handlers.WatchedFileHandler(filename[, mode[, encoding[, delay]]])
指定的文件被打開,用來記錄日志,假如mode未指示,默認(rèn)使用a


RotatingFileHandler
支持磁盤文件的回滾
class logging.handlers.RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0)
你可以使用 maxBytes和backupCount值去讓日志文件在預(yù)設(shè)大小時(shí)回滾。只要日志文件在長(zhǎng)度上接近maxBytes時(shí),就會(huì)關(guān)閉舊日志文件,打開一個(gè)新的日志文件,實(shí)現(xiàn)回滾。假如maxBytes或backupCount為0,回滾不會(huì)發(fā)生。假如backupCount非零,系統(tǒng)會(huì)備份舊文件,文件名后加‘.1’, ‘.2’ 。比如,日志文件名為app.log,backupCount為5,將會(huì)得到app.log, app.log.1, app.log.2, 直到app.log.5這6個(gè)文件。寫入日志的文件總是app.log,當(dāng)這個(gè)文件填滿時(shí),就關(guān)閉它并重命名為app.log.1, 假如還存在app.log.1, app.log.2等文件,就逐一改名為app.log.2, app.log.3等等。


TimedRotatingFileHandler
支持在指定時(shí)間段內(nèi)回滾日志
class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False)
回滾基于when和interval設(shè)置,when指定interval的類型,參見下表,大小寫不敏感,默認(rèn)按小時(shí)回滾
Value Type of interval
'S' Seconds
'M' Minutes
'H' Hours
'D' Days
'W0'-'W6' Weekday (0=Monday)
'midnight' Roll over at midnight
回滾擴(kuò)展名使用strftime format %Y-%m-%d_%H-%M-%S或其頭部子字符串,當(dāng)使用基于weekday的回滾時(shí),W0表示周一,……,W6表示周日,interval的值不會(huì)用到
backupCount表示備份數(shù),當(dāng)日志很多時(shí),新日志會(huì)覆蓋舊日志,刪除邏輯使用interval值去決定刪除哪些日志文件
utc為true,表示使用UTC時(shí)間,否則使用本地時(shí)間


SocketHandler
通過網(wǎng)絡(luò)套接字輸出日志,SocketHandler類的基類使用TCP socket
class logging.handlers.SocketHandler(host, port)
向指定地址和端口的遠(yuǎn)程主機(jī)發(fā)送日志


DatagramHandler
繼承自基類SocketHandler類,使用UDP socket發(fā)送日志message
class logging.handlers.DatagramHandler(host, port)


SysLogHandler
發(fā)送日志到遠(yuǎn)程或是本地unix syslog
class logging.handlers.SysLogHandler(address=('localhost', SYSLOG_UDP_PORT), facility=LOG_USER, socktype=socket.SOCK_DGRAM)


NTEventLogHandler
發(fā)送日志消息到本地Windows NT, Windows 2000 or Windows XP event log
class logging.handlers.NTEventLogHandler(appname, dllname=None, logtype='Application')


SMTPHandler
通過SMTP將日志消息發(fā)送到email address


MemoryHandler
支持將日志message緩存到內(nèi)存中,周期性刷新日志到target handler
class logging.handlers.BufferingHandler(capacity)
class logging.handlers.MemoryHandler(capacity, flushLevel=ERROR, target=None)


HTTPHandler
使用GET或是POST,將日志message發(fā)送到web server
class logging.handlers.HTTPHandler(host, url, method='GET')


參考文獻(xiàn)
[1].https://docs.python.org/2/library/logging.config.html#module-logging.config
[2].https://docs.python.org/2/library/logging.html#module-logging

總結(jié)

以上是生活随笔為你收集整理的Python中logging.config配置文件解读的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。