主要分為4個框架:
loggers
:記錄器,可**用程式直接呼叫的介面
handlers
:處理器,將(記錄器產生的)日誌記錄分配至正確的目的地(預設為標準輸出)
filters
:過濾器,提供了更好的粒度控制,決定輸出那些日誌記錄
formatters
:格式化器,格式化最終列印日誌記錄的格式或布局
下面做一詳細介紹:
1.1 logger記錄器
logger
是乙個樹形層級結構
建立方法:logger = logging.getlogger(logger_name)
1.2 handler 處理器
handler處理器型別有很多種,比較常用的有三個(詳情可以訪問python logging.handlers),
ch.setlevel(logging.warn) # 指定日誌級別,低於warn級別的日誌將被忽略
ch.setformatter(formatter_name) # 設定乙個格式化器formatter
ch.addfilter(filter_name) # 增加乙個過濾器,可以增加多個
ch.removefilter(filter_name) # 刪除乙個過濾器
主要分為5個級別:
debug
:詳細的資訊,通常只出現在診斷問題上
info
:確認一切按預期執行
warning
:一些意想不到的事情發生了,或表明一些問題在不久的將來會出現(例如:磁碟空間低)。這個軟體還能按預期工作。
error
:更嚴重的問題,軟體沒能執行一些功能
critical
:乙個嚴重的錯誤,這表明程式本身可能無法繼續執行
# -*- coding:utf-8 -*-
import logging
logging.basicconfig(filename=
'logfile.log'
,format
='[%(asctime)s-%(filename)s-%(levelname)s:%(message)s]'
, level = logging.debug,
filemode=
'a',
datefmt=
'%y-%m-%d %i:%m:%s %p'
)def
logtest()
: logging.error(
"這是一條error資訊的列印"
) logging.info(
"這是一條info資訊的列印"
) logging.warning(
"這是一條warn資訊的列印"
) logging.debug(
"這是一條debug資訊的列印"
)if __name__ ==
'__main__'
: logtest(
)
3.2 示例2
# -*- coding:utf-8 -*-
import logging
# 第一步,建立乙個logger
logger = logging.getlogger(
)logger.setlevel(logging.info)
# log等級總開關
# 第二步,建立乙個handler,用於寫入日誌檔案
logfile =
'./log.txt'
fh = logging.filehandler(logfile, mode=
'a')
# open的開啟模式這裡可以進行參考
fh.setlevel(logging.debug)
# 輸出到file的log等級的開關
# 建立乙個handler,用於輸出到控制台
ch = logging.streamhandler(
)ch.setlevel(logging.warning)
# 輸出到console的log等級的開關
# 第三步,定義handler的輸出格式
formatter = logging.formatter(
"%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
)fh.setformatter(formatter)
ch.setformatter(formatter)
# 第四步,將logger新增到handler裡面
logger.addhandler(fh)
logger.addhandler(ch)
# 日誌
logger.debug(
'這是 logger debug message'
)logger.info(
'這是 logger info message'
)logger.warning(
'這是 logger warning message'
)logger.error(
'這是 logger error message'
)logger.critical(
'這是 logger critical message'
)
3.3 日誌格式說明函式:logging.basicconfig(
**kwargs)
引數名稱
描述filename
指定日誌輸出目標檔案的檔名,指定該設定項後日誌資訊將寫入到指定檔案,不會被輸出到控制台
filemode
指定日誌檔案的開啟模式,預設為』a』。需要注意的是,該選項要在filename指定時才有效
format
指定日誌格式字串(其實就是每一行的開頭資訊,每一行的後續資訊將由後續的logging.info等指定內容填充),即指定日誌輸出時所包含的字段資訊以及它們的順序(參考文末內容)
datefmt
指定日期/時間格式。需要注意的是,該選項要在format中包含時間欄位%(asctime)s時才有效
level
指定日誌器的日誌級別,大於等於該級別的將會被輸出
stream
指定日誌輸出目標stream,如sys.stdout、sys.stderr以及網路stream。需要說明的是,stream和filename不能同時提供,否則會引發 valueerror異常
style
python 3.2中新新增的配置項。指定format格式字串的風格,可取值為』%』、』{『和』$』,預設為』%』
handlers
python 3.3中新新增的配置項。該選項如果被指定,它應該是乙個建立了多個handler的可迭代物件,這些handler將會被新增到root logger。需要說明的是:filename、stream和handlers這三個配置項只能有乙個存在,不能同時出現2個或3個,否則會引發valueerror異常。
tensorflow入門 1 構造線性回歸模型
今天讓我們一起來學習如何用tf實現線性回歸模型。所謂線性回歸模型就是y w x b的形式的表示式擬合的模型。我們先假設一條直線為 y 0.1x 0.3,即w 0.1,b 0.3,然後利用隨機數在這條直線附近產生1000個隨機點,然後利用tensorflow構造的線性模型去學習,最後對比模型所得的w和...
共模差模阻抗
特性阻抗 差分阻抗含義 特性阻抗 是根據輸入阻抗計算的出的平均值。輸入阻抗 是線纜實際量測的阻抗值。差分阻抗 發射訊號可正負交替又稱為平衡阻抗。共模阻抗 導體走正編織或地線走負的訊號。目前用於同軸線或帶地線的cable。又稱不平衡阻抗。特性阻抗 假設一根均勻電纜無限延伸,在發射端的在某一頻率下的阻抗...
in amp 共模差模濾波
首先,確定兩蘋串聯電阻器的阻值,同時保證前面的電路可充分地驅動這個阻抗。這兩蘋電阻器的典型值在2k 和10k 之間,這兩蘋電阻器產生的雜訊不應當大於該儀表放大器本身的雜訊。採用一對2k 電阻器,詹森雜訊會增加 8nv hz1 2 採用4k 電阻器,會增加11nv hz1 2 採用10k 電阻器,會增...