电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 程序員必須掌握的日志記錄

瀏覽:30日期:2022-07-13 17:38:16

寫在之前

在我們的現實生活中,「日志記錄」其實是一件非常重要的事情,比如銀行的轉賬記錄,汽車的行車記錄儀記錄行駛過程中的一切,如果出現了什么問題,我們可以通過「日志記錄」來搞清楚到底發生了什么事情。

除了在生活中,在日常的系統開發以及調試等過程中,記錄日志同樣是一件很重要的事情。很多編程初學者并沒有「記錄日志」的習慣,認為記錄日志是一件可有可無的事情,出現問題的時候只要使用 print 函數打印一下程序的中間結果即可,真是 too young too naive。只是 print 的話對于簡單的腳本程序來說或許可行,可是到了碰到復雜的系統,你如果還是只用 print 這種方式的話,你會看到大量的消息,看到吐也不一定能找到其中有用的消息。

「日志」是一個系統的重要組成部分,用來記錄用戶操作、系統運行狀態和錯誤信息,它的好壞直接影響到系統出現問題時定位的速度,有日志記錄,我們可以在服務崩潰的時候很快的通過查看日志來發現問題出現的地方,同樣也可以通過對日志的觀察和分析,提前發現系統可能存在的風險。

Python 的標準日志模塊

上面我們說了「日志」是如此的重要,作為無所不能的 Python 當然也有日志相關的功能,Python 標準庫中提供了 logging 模塊供我們使用。在最簡單的使用中,默認情況下 logging 將日志打印到屏幕終端,我們可以直接導入 logging 模塊,然后調用 debug,info,warn,error 和 critical 等函數來記錄日志,默認日志的級別為 warning,級別比 warning 高的日志才會被顯示(critical > error > warning > info > debug),「級別」是一個邏輯上的概念,用來區分日志的重要程度。

import logginglogging.debug(’debug message’)logging.info('info message')logging.warn(’warn message’)logging.error('error message')logging.critical(’critical message’)

上述代碼的執行結果如下所示:

WARNING:root:warn messageERROR:root:error messageCRITICAL:root:critical message

我在上面說過,用 print 的話會產生大量的信息,從而很難從中找到真正有用的信息。而 logging 中將日志分成不同的級別以后,我們在大多數時間只保存級別比較高的日志信息,從而提高了日志的性能和分析速度,這樣我們就可以很快速的從一個很大的日志文件里找到錯誤的信息。

配置日志格式

我們在用 logging 來記錄日志之前,先來進行一些簡單的配置:

import logginglogging.basicConfig(filename= ’test.log’, level= logging.INFO)logging.debug(’debug message’)logging.info('info message')logging.warn(’warn message’)logging.error('error message')logging.critical(’critical message’)

上面的例子中,我是用 basicConfig 對日志進行了簡單的配置,其實我們還可以進行更為復雜些的配置,在此之前,我們先來了解一下 logging 中的幾個概念:

Logger:日志記錄器,是應用程序中可以直接使用的接口。 Handler:日志處理器,用以表明將日志保存到什么地方以及保存多久。 Formatter:格式化,用以配置日志的輸出格式。

上述三者的關系是:一個 Logger 使用一個 Handler,一個 Handler 使用一個 Formatter。那么概念我們知道了,該如何去使用它們呢?我們的 logging 中有很多種方式來配置文件,簡單的就用上面所說的 basicConfig,對于比較復雜的我們可以將日志的配置保存在一個配置文件中,然后在主程序中使用 fileConfig 讀取配置文件。

基本的知識我們知道了,下面我們來做一個小的題目:日志文件保存所有 debug 及其以上級別的日志,每條日志中要有打印日志的時間,日志的級別和日志的內容。請先自己嘗試著思考一下,如果你已經思考完畢請繼續向下看:

import logginglogging.basicConfig( level= logging.DEBUG, format = ’%(asctime)s : %(levelname)s : %(message)s’, filename= 'test.log')logging.debug(’debug message’)logging.info('info message')logging.warn(’warn message’)logging.error('error message')logging.critical(’critical message’)

上述代碼的一次運行結果如下:

2018-10-19 22:50:35,225 : DEBUG : debug message2018-10-19 22:50:35,225 : INFO : info message2018-10-19 22:50:35,225 : WARNING : warn message2018-10-19 22:50:35,225 : ERROR : error message2018-10-19 22:50:35,225 : CRITICAL : critical message

我剛剛在上面說過,對于比較復雜的我們可以將日志的配置保存在一個配置文件中,然后在主程序中使用 fileConfig 讀取配置文件。下面我們就來看一個典型的日志配置文件(配置文件名為 logging.conf):

[loggers]keys = root[handlers]keys = logfile[formatters]keys = generic[logger_root]handlers = logfile[handler_logfile]class = handlers.TimedRotatingFileHandlerargs = (’test.log’, ’midnight’, 1, 10)level = DEBUGformatter = generic[formatter_generic]format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s] %(message)s

在上述的日志配置文件中,首先我們在 [loggers] 中聲明了一個叫做 root 的日志記錄器(logger),在 [handlers] 中聲明了一個叫 logfile 的日志處理器(handler),在 [formatters] 中聲明了一個名為 generic 的格式化(formatter)。之后在 [logger_root] 中定義 root 這個日志處理器(logger) 所使用的日志處理器(handler) 是哪個,在 [handler_logfile] 中定義了日志處理器(handler) 輸出日志的方式、日志文件的切換時間等。最后在 [formatter_generic] 中定義了日志的格式,包括日志的產生時間,級別、文件名以及行號等信息。

有了上述的配置文件以后,我們就可以在主代碼中使用 logging.conf 模塊的 fileConfig 函數加載日志配置:

import loggingimport logging.configlogging.config.fileConfig(’logging.conf’)logging.debug(’debug message’)logging.info('info message')logging.warn(’warn message’)logging.error('error message')logging.critical(’critical message’)

上述代碼的運行一次的結果如下所示:

2018-10-19 23:00:02,809 WARNI [root:8] warn message2018-10-19 23:00:02,809 ERROR [root:9] error message2018-10-19 23:00:02,809 CRITI [root:10] critical message

寫在之后

正如標題中所說的那樣,我認為「日志記錄」是每個 Python 程序員必須要知道且學會的東西,也是每個程序員必須具備的意識。如果你之前沒有使用過日志亦或者說不知道該怎么去使用日志記錄,這篇文章我相信會給你帶來一些幫助。

Python 的日志庫設計之好,用起來之靈活,可以說是 Python 標準庫中相當優秀的存在。當然上面我們所說的只是 Python 日志庫中很少的一部分,更多的操作和內容還需要你在今后的學習和實踐中自己去發掘和運用。

The end。

以上就是Python 程序員必須掌握的日志記錄的詳細內容,更多關于python 日志的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: MES系统-WMS系统-MES定制开发-制造执行MES解决方案-罗浮云计算 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 实体店商新零售|微赢|波后|波后合作|微赢集团 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 利浦顿蒸汽发生器厂家-电蒸汽发生器/燃气蒸汽发生器_湖北利浦顿热能科技有限公司官网 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 臭氧老化试验箱,高低温试验箱,恒温恒湿试验箱,防水试验设备-苏州亚诺天下仪器有限公司 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 猎头招聘_深圳猎头公司_知名猎头公司 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 恒温油槽-恒温水槽-低温恒温槽厂家-宁波科麦仪器有限公司 | 铆钉机|旋铆机|东莞旋铆机厂家|鸿佰专业生产气压/油压/自动铆钉机 | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 仿真植物|仿真树|仿真花|假树|植物墙 - 广州天昆仿真植物有限公司 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 液氮罐_液氮容器_自增压液氮罐-北京君方科仪科技发展有限公司 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 平面钻,法兰钻,三维钻-山东兴田阳光智能装备股份有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 |