日志模块-logging模块
生活随笔
收集整理的這篇文章主要介紹了
日志模块-logging模块
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
日志模塊 -logging(非常重要)
- 記錄用戶行為
- 程序運(yùn)行過(guò)程
- 程序錯(cuò)誤記錄
程序默認(rèn)級(jí)別在info以上
# 使用#導(dǎo)入logging模塊import logginglogging.debug('低級(jí)別的拍錯(cuò)信息') #低級(jí)別的排錯(cuò)信息logging.info('正常的信息') #正常信息logging.warning('警告信息') #警告信息logging.error('錯(cuò)誤信息') #錯(cuò)誤信息logging.critical('高級(jí)別的錯(cuò)誤信息') #高級(jí)別錯(cuò)誤信息#結(jié)果WARNING:root:警告信息ERROR:root:錯(cuò)誤信息CRITICAL:root:高級(jí)別的錯(cuò)誤信息
簡(jiǎn)單配置
import logging#配置logging logging.basicConfig(filename='logger.log', level=logging.INFO)logging.debug('低級(jí)別的拍錯(cuò)信息') #低級(jí)別的排錯(cuò)信息 logging.info('正常的信息') #正常信息 logging.warning('警告信息') #警告信息 logging.error('錯(cuò)誤信息') #錯(cuò)誤信息 logging.critical('高級(jí)別的錯(cuò)誤信息') #高級(jí)別錯(cuò)誤信息#結(jié)果 當(dāng)前文件路徑下生成了文件logger.log 其內(nèi)容如下: INFO:root:正常的信息 WARNING:root:警告信息 ERROR:root:錯(cuò)誤信息 CRITICAL:root:高級(jí)別的錯(cuò)誤信息- 因?yàn)橥ㄟ^(guò)level=logging.INFO設(shè)置了日志的通知級(jí)別,所以文件中打印出了INFO的信息
basicConfig()常用配置參數(shù)
logging.basicConfig()函數(shù)中可通過(guò)具體參數(shù)來(lái)更改logging模塊默認(rèn)行為,可用參數(shù)有:filename:用指定的文件名創(chuàng)建FiledHandler,這樣日志會(huì)被存儲(chǔ)在指定的文件中。filemode:文件打開(kāi)方式,在指定了filename時(shí)使用這個(gè)參數(shù),默認(rèn)值為“a”還可指定為“w”。format:指定handler使用的日志顯示格式。datefmt:指定日期時(shí)間格式。level:設(shè)置rootlogger(后邊會(huì)講解具體概念)的日志級(jí)別stream:用指定的stream創(chuàng)建StreamHandler??梢灾付ㄝ敵龅絪ys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默認(rèn)為sys.stderr。若同時(shí)列出了filename和stream兩個(gè)參數(shù),則stream參數(shù)會(huì)被忽略。format參數(shù)中可能用到的格式化串:%(name)s Logger的名字%(levelno)s 數(shù)字形式的日志級(jí)別%(levelname)s 文本形式的日志級(jí)別%(pathname)s 調(diào)用日志輸出函數(shù)的模塊的完整路徑名,可能沒(méi)有%(filename)s 調(diào)用日志輸出函數(shù)的模塊的文件名%(module)s 調(diào)用日志輸出函數(shù)的模塊名%(funcName)s 調(diào)用日志輸出函數(shù)的函數(shù)名%(lineno)d 調(diào)用日志輸出函數(shù)的語(yǔ)句所在的代碼行%(created)f 當(dāng)前時(shí)間,用UNIX標(biāo)準(zhǔn)的表示時(shí)間的浮 點(diǎn)數(shù)表示%(relativeCreated)d 輸出日志信息時(shí)的,自Logger創(chuàng)建以 來(lái)的毫秒數(shù)%(asctime)s 字符串形式的當(dāng)前時(shí)間。默認(rèn)格式是 “2003-07-08 16:49:45,896”。逗號(hào)后面的是毫秒%(thread)d 線程ID??赡軟](méi)有%(threadName)s 線程名。可能沒(méi)有%(process)d 進(jìn)程ID。可能沒(méi)有%(message)s用戶輸出的消息- basicConfig有兩個(gè)坑(缺點(diǎn))
- 對(duì)中文的兼容問(wèn)題,無(wú)法解決中文的亂碼問(wèn)題
- 不能同時(shí)往文件和屏幕輸出
利用對(duì)象的方式創(chuàng)建logging
- 程序的充分解耦,讓程序變得高可定制化
各功能相當(dāng)于綁定,功能的添加時(shí)通過(guò)對(duì)象之間的綁定
import logging#創(chuàng)建一個(gè)logging對(duì)象logger = logging.getLogger()#創(chuàng)建一個(gè)logging文件對(duì)象fh = logging.FileHandler('text.log', encoding='utf-8', mode='a')#創(chuàng)建一個(gè)logging控制臺(tái)對(duì)象sh = logging.StreamHandler() #輸出至什么地方#輸出格式formatter = '%(asctime)s%(lineno)d'#創(chuàng)建輸出格式的對(duì)象fm = logging.Formatter(formatter) #設(shè)置一個(gè)格式#文件對(duì)象和控制臺(tái)對(duì)象添加輸出格式fh.setFormatter(fm) #以什么格式輸出至什么地方sh.setFormatter(fm)#給logging對(duì)象添加logger.addHandler(fh)logger.addHandler(sh)logging.debug('低級(jí)別的拍錯(cuò)信息') #低級(jí)別的排錯(cuò)信息logging.info('正常的信息') #正常信息logging.warning('警告信息') #警告信息logging.error('錯(cuò)誤信息') #錯(cuò)誤信息logging.critical('高級(jí)別的錯(cuò)誤信息') #高級(jí)別錯(cuò)誤信息- 非常靈活,自定義的程度很高,可以設(shè)定不同的輸出位置和不同的格式
logging庫(kù)提供了多個(gè)組件:Logger、Handler、Filter、Formatter。Logger對(duì)象提供應(yīng)用程序可直接使用的接口,Handler發(fā)送日志到適當(dāng)?shù)哪康牡?#xff0c;Filter提供了過(guò)濾日志信息的方法,Formatter指定日志顯示格式。另外,可以通過(guò)logger.setLevel(logging.Debug)設(shè)置級(jí)別,當(dāng)然,也可以通過(guò)
fh.setLevel(logging.Debug)單對(duì)文件流設(shè)置某個(gè)級(jí)別
總結(jié)
配置方式兩種
- basicConfig()直接設(shè)置全局
- 不兼容中文模式
- 不能同時(shí)多位置輸出
- logging對(duì)象創(chuàng)建
- 高定制,高靈活
轉(zhuǎn)載于:https://www.cnblogs.com/liliudong/p/9660663.html
總結(jié)
以上是生活随笔為你收集整理的日志模块-logging模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 六月中旬的心得
- 下一篇: Fast Paxos