logging 日誌模組

2021-08-27 18:48:55 字數 3266 閱讀 6308

什麼是日誌

無處不在的

所有的程式必須記錄日誌

給使用者看的

購物軟體

銀行卡給內部人員看的

給技術人員看的

計算器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...