什麼是日誌
無處不在的
所有的程式必須記錄日誌
給使用者看的
購物軟體
銀行卡給內部人員看的
給技術人員看的
計算器500個表示式
一些計算過程,或者是一些操作過程需要記錄下來
程式出現bug的時候,來幫助我們記錄過程 排除錯誤
給非技術人員看的
學校,公司的軟體
誰在什麼時候做了什麼事兒,刪除操作
class
student:
def__init__
(self, name):
self.name = name
defselect_course
(self):
print('succussful choose class')
with open('log', 'a', encoding='utf-8') as f:
f.writer('%s : %s選課成功' % (time.strftime('%h-%m-%s'), self.name, 'python'))
# 自己寫的一條日誌,太麻煩,每次都要開啟檔案,寫入內容,所以有了logging模組
laura = student('laura')
laura.select_course() # 已經寫入了log檔案,誰在什麼時間登陸
import logging # 幫助我們以規範的形式和規範的格式或者寫檔案的一些資訊
logging.basicconfig(level=logging.info) # 都是在檔案中寫入資訊,但是是分等級的,可以通過不同等級的資訊來分析產品或使用者記錄
logging.debug('debug message') # 計算或者工作的細節,正常的資訊預設不顯示,所以有了簡單配置
logging.info('info message') # 記錄一些使用者的增刪改查的操作
logging.warning('input a string type') # 警告操作
logging.error('error message') # 錯誤操作
logging.critical('critical message') # 批判的 直接導致程式出錯退出的
>>>
info:root:info message # 格式:等級:使用者:操作(列印什麼就是什麼)
warning:root:input a string type
error:root:error message
critical:root:critical message
簡單配置
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='test.log',
filemode='w')
logging.warning('input a string type')
logging.error('eof error') # 警告操作
>>>
# test.log檔案中的內容
mon, 10 sep 2018
21:05:10
3, logging i.py[line:57] warning input a string type
mon, 10 sep 2018
21:05:10
3, logging i.py[line:58] error eof error
等級可以配置,可以控制哪些訊息顯示哪些不顯示,預設從warning開始顯示,
可以控制輸出的格式,如增加時間
報錯的行數,如在哪一行出錯
一次配置,格式不用改了,就改輸入的內容以及要列印的等級。
當配置了filename時,會把下面兩句都寫進filename檔案中。但是如果要把中文寫進檔案中,簡單配置是不行的,不能知道編碼,沒有給定這個引數。物件配置可以
物件的配置
幫助解決中文問題
basicconfig要麼往檔案打,要麼往螢幕輸出,但是他不能既往檔案打又往螢幕輸出。
配置過程非常複雜,但十分靈活,可以自由配置
先建立乙個log物件 : logger,繫結檔案操作符,螢幕操作符
還要建立乙個控制檔案輸出的檔案操作符,繫結乙個格式
還要建立乙個控制螢幕輸出的螢幕操作符,繫結乙個格式
要建立乙個格式
import logging
logger = logging.getlogger() # 建立乙個logging物件
logger.setlevel(logging.debug) # 設定顯示等級,從debug開始輸出了
# 建立乙個控制檔案輸出的檔案操作符
fh = logging.filehandler('mylog.log') # 輸出的檔案可以改
fh2 = logging.filehandler('mylog2.log') # 除了輸入到mylog裡,還會輸出到mylog2中
sh = logging.streamhandler()
fmt = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 配置已經固定好了修改時可以按照需求修改就行了
fmt2 = logging.formatter('%(asctime)s - %(name)s[line:%(lineno)d] - %(levelname)s - %(message)s')
fh.setformatter(fmt)
sh.setformatter(fmt2)
sh.setlevel(logging.warning) # 回到warning,如果不想在螢幕輸出debug的話
logger.addhandler(sh)
logger.addhandler(fh)
logger.addhandler(fh2)
logger.debug('debug message')
logger.info('info message')
logger.warning('input a string type')
logger.error('error message')
logging.critical('critical message')
日誌模組 logging模組
logging.debug 通常除錯時用到的日誌資訊 logging.info 證明事情按照預期的那樣工作 longging.warning 表明發生了意外,或者不就得將來發生的問題 如 磁碟滿了 軟體還是正常的工作 longging.error 由於更嚴重的問題導致軟體已經不能繼續執行某些功能 l...
logging日誌模組
日誌級別日誌輸出 將日誌輸出到控制台 log1.py 如下 import logging logging.basicconfig level logging.warning,format asctime s filename s line lineno d levelname s message s...
logging日誌模組
一 使用logging日誌 主要下面幾個步驟 1.建立乙個logger 可以理解為 記錄xx日誌的人 2.建立乙個handler 可以理解為 記錄的規則,比如啥等級的日誌會記錄下來 3.定義乙個fomatter 可以理解為 記錄的格式 比如一些需要的字段資訊 等等 4.將建立logger 跟hand...