1、logging是什麼?
logging是python自帶的一個日誌模塊
2、logging作用是什麼?
3、logging默認日誌級別: NOTSET、DEBUG、INFO、WARNING、ERROR、CRITICAL;測試使用INFO、ERROR即可。
4、日誌輸出的管理器
示例:
輸出內容為:
默認輸出warnning及以上級別的日誌,root是日誌收集器的名字。
5、自定義日誌
輸出內容為:
日誌文件輸出為:
6、日誌格式 formatter
日誌記錄的最終輸出格式,formatter對象定義了最終的log信息的順序、結構和內容,規定了日誌輸出按照什麼樣的格式,默認的時間格式為 %Y-%m-%d %H:%M:%S常用格式:formatter=logging.Formatter("%(asctime)s-%(levelname)s-%(filename)s-%(name)s-日誌信息:%(massage)s")
輸出日誌格式含義:
名稱說明-%(name)s-數字形式的日誌級別%(levelname)s文本形式的日誌級別%(levelno)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用戶輸出的消息7、寫一個日誌類
import loggingclassMyLog():
defmylog(self,msg,level):
# 定義一個日誌收集器my_logger
my_logger = logging.getLogger('python12')
# 設置收集的級別,不設置的話,默認收集warning及以上級別的日誌
my_logger.setLevel('DEBUG')
# 設定日誌輸出格式
formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s-%(name)s-日誌信息:%(message)s')
# 創建我們自己的輸出渠道(輸出也要設定級別,否則也默認輸出warning及以上級別的日誌)
ch = logging.StreamHandler() # 默認輸出到控制臺
ch.setLevel('DEBUG')
ch.setFormatter(formatter)
fh = logging.FileHandler('20200721log.txt')
fh.setLevel('DEBUG')
fh.setFormatter(formatter)
# 將收集和輸出對接,指定輸出渠道
my_logger.addHandler(ch)
my_logger.addHandler(fh)
#收集日誌
if level =='DEBUG':
my_logger.debug(msg)
elif level =='INFO':
my_logger.info(msg)
elif level =='WARNING':
my_logger.warning(msg)
elif level =='ERROR':
my_logger.error(msg)
else:
my_logger.critical(msg)
#關閉渠道(日誌收集器),否則會重複收集、重複輸出
my_logger.removeHandler(ch)
my_logger.removeHandler(fh)
defdebug(self,msg):
self.mylog(msg,'DEBUG')
definfo(self, msg):
self.mylog(msg,"INFO")
defwarning(self, msg):
self.mylog(msg,"WARNING")
deferror(self, msg):
self.mylog(msg,"ERROR")
defcritical(self, msg):
self.mylog(msg,"CRITICAL")if __name__ =='__main__':
my_logger = MyLog()
my_logger.debug('haha')
my_logger.info('enen')
調用日誌類:
from my_log import MyLog
my_logger = MyLog()