日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

python logging 重復寫日志問題解決辦法詳解

瀏覽:180日期:2022-07-15 10:21:51

python logging 重復寫日志問題

用Python的logging模塊記錄日志時,遇到了重復記錄日志的問題,第一條記錄寫一次,第二條記錄寫兩次,第三條記錄寫三次。。。很頭疼,這樣記日志可不行。網上搜索到了原因與解決方案:

原因:沒有移除handler 解決:在日志記錄完之后removeHandler

修改前示例代碼:

import loggingdef log(message): logger = logging.getLogger(’testlog’) streamhandler = logging.StreamHandler() streamhandler.setLevel(logging.ERROR) formatter = logging.Formatter(’%(asctime)s - %(levelname)s - %(name)s - %(message)s’) streamhandler.setFormatter(formatter) logger.addHandler(streamhandler) logger.error(message)if __name__ == ’__main__’: log(’hi’) log(’hi too’) log(’hi three’)

修改前輸出結果:

2016-07-08 09:17:29,740 - ERROR - testlog - hi 2016-07-08 09:17:29,740 - ERROR - testlog - hi too 2016-07-08 09:17:29,740 - ERROR - testlog - hi too 2016-07-08 09:17:29,740 - ERROR - testlog - hi three 2016-07-08 09:17:29,740 - ERROR - testlog - hi three 2016-07-08 09:17:29,740 - ERROR - testlog - hi three

修改后示例代碼:

import loggingdef log(message): logger = logging.getLogger(’testlog’) streamhandler = logging.StreamHandler() streamhandler.setLevel(logging.ERROR) formatter = logging.Formatter(’%(asctime)s - %(levelname)s - %(name)s - %(message)s’) streamhandler.setFormatter(formatter) logger.addHandler(streamhandler) logger.error(message) # 添加下面一句,在記錄日志之后移除句柄 logger.removeHandler(streamhandler)if __name__ == ’__main__’: log(’hi’) log(’hi too’) log(’hi three’)

修改后輸出結果:

2016-07-08 09:32:28,206 - ERROR - testlog - hi 2016-07-08 09:32:28,206 - ERROR - testlog - hi too 2016-07-08 09:32:28,206 - ERROR - testlog - hi three

深度解析:

Google之后,大概搞明白了,就是你第二次調用log的時候,根據getLogger(name)里的name獲取同一個logger,而這個logger里已經有了第一次你添加的handler,第二次調用又添加了一個handler,所以,這個logger里有了兩個同樣的handler,以此類推,調用幾次就會有幾個handler。。

所以這里有以下幾個解決辦法:

每次創建不同name的logger,每次都是新logger,不會有添加多個handler的問題。(ps:這個辦法太笨,不過我之前就是這么干的。。) 像上面一樣每次記錄完日志之后,調用removeHandler()把這個logger里的handler移除掉。在log方法里做判斷,如果這個logger已有handler,則不再添加handler。 與方法2一樣,不過把用pop把logger的handler列表中的handler移除。

下面是方法3與方法4的代碼示例:

方法3:

import loggingdef log(message): logger = logging.getLogger(’testlog’) # 這里進行判斷,如果logger.handlers列表為空,則添加,否則,直接去寫日志 if not logger.handlers: streamhandler = logging.StreamHandler() streamhandler.setLevel(logging.ERROR) formatter = logging.Formatter(’%(asctime)s - %(levelname)s - %(name)s - %(message)s’) streamhandler.setFormatter(formatter) logger.addHandler(streamhandler) logger.error(message)if __name__ == ’__main__’: log(’hi’) log(’hi too’) log(’hi three’)

方法4:

import loggingdef log(message): logger = logging.getLogger(’testlog’) streamhandler = logging.StreamHandler() streamhandler.setLevel(logging.ERROR) formatter = logging.Formatter(’%(asctime)s - %(levelname)s - %(name)s - %(message)s’) streamhandler.setFormatter(formatter) logger.addHandler(streamhandler) logger.error(message) # 用pop方法把logger.handlers列表中的handler移除,注意如果你add了多個handler,這里需多次pop,或者可以直接為handlers列表賦空值 logger.handlers.pop() # logger.handler = []if __name__ == ’__main__’: log(’hi’) log(’hi too’) log(’hi three’)

這幾種方法都親試可行,個人覺得方法3判斷更加優雅,你覺得呢?

到此這篇關于python logging 重復寫日志問題j解決辦法詳解的文章就介紹到這了,更多相關python logging 重復寫日志問題內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国内精品福利| 国产精品日韩久久久| 国产日韩欧美三级| 深夜福利亚洲| 91视频一区| 高清一区二区| 亚洲免费影院| 午夜av不卡| 国产精品久久乐| 日韩中文字幕| 一区二区精品| 亚洲国产一区二区在线观看| 日韩精品第一| 久久精品 人人爱| 亚洲欧美一级| 亚洲九九精品| 综合一区二区三区| 亚洲欧美日韩一区在线观看| 日韩欧美一区二区三区在线视频| 国产精品宾馆| 精品免费视频| 久久精品一本| 国产第一亚洲| 岛国av免费在线观看| 色爱综合网欧美| 亚洲成a人片| 亚洲五月婷婷| 亚洲精品午夜av福利久久蜜桃| 99久久久久| 视频一区二区中文字幕| 亚洲1区在线| 日本免费一区二区视频| 欧美日一区二区三区在线观看国产免| 日韩一区二区三免费高清在线观看| 亚洲欧美久久| 亚洲精品亚洲人成在线观看| 日韩激情一区| 国产美女高潮在线观看| 四虎成人av| 国产综合亚洲精品一区二| 91精品一区国产高清在线gif| 欧美在线影院| 清纯唯美亚洲综合一区| 国产福利亚洲| 影音先锋国产精品| 伊人影院久久| 亚洲欧美一级| 国产成人精品免费视| 成人日韩在线观看| 亚洲精品影院在线观看| 色爱综合网欧美| 激情综合自拍| 国产精品丝袜在线播放| 99精品在线| 国产调教一区二区三区| 日韩在线二区| 日本aⅴ亚洲精品中文乱码| 精品成人18| 日韩精品一区二区三区中文| 国产va在线视频| 亚州欧美在线| 婷婷成人在线| 麻豆精品在线视频| 婷婷成人av| 欧美大黑bbbbbbbbb在线| 精品国产午夜肉伦伦影院| 亚洲成人精品| 欧美一区影院| 中文字幕av一区二区三区人 | 日av在线不卡| 日韩三区免费| 国产一区二区精品久| 日韩黄色在线观看| 丝袜美腿亚洲一区| 久久久久久美女精品| 日韩av片子| 久久久国产精品网站| 天堂久久av| 男人的天堂亚洲一区| 99精品综合| 午夜av成人| 久久天堂av| 日韩av在线中文字幕| 精品一区二区三区四区五区| 婷婷久久免费视频| 成人精品中文字幕| 国产欧美一区二区三区精品酒店| 麻豆成人av在线| 国产一区二区三区不卡av | 中文字幕日本一区二区| 亚洲欧美日本国产| 日韩精品一页| 国产欧美综合一区二区三区| 国产免费av国片精品草莓男男| 日韩免费精品| 欧美久久久网站| 国产精品三级| 高清日韩中文字幕| 午夜精品成人av| 久久久久国产| 亚洲精品一级| 国产精品1区在线| 日韩精品网站| 欧美日韩国产欧| 亚洲激情中文| 欧美一区二区三区久久精品| 免费看久久久| 伊人精品一区| aⅴ色国产欧美| 亚洲精品伊人| 天堂8中文在线最新版在线| 国产精品外国| 老司机免费视频一区二区| 久久亚洲精品中文字幕蜜潮电影| 午夜日韩av| 青草av.久久免费一区| 日韩一区二区三区高清在线观看| 国产视频一区三区| 国产精品女主播一区二区三区| 欧美天堂亚洲电影院在线观看| 国产精品av久久久久久麻豆网| 老色鬼久久亚洲一区二区| 91欧美精品| 国产精品女主播一区二区三区| 精品91福利视频| 日韩1区2区3区| 激情久久五月| 欧美精品不卡| 一区二区高清| 1000部精品久久久久久久久| 欧美日韩亚洲一区三区| 精品日韩视频| 久久99久久久精品欧美| 久久xxxx精品视频| 国产精品hd| 久久国产日韩欧美精品| 久久九九精品| 久久av免费| 国产精品欧美大片| 久久精品99国产国产精| 亚洲图片久久| 男人操女人的视频在线观看欧美| 日韩精品诱惑一区?区三区| 久久伊人亚洲| 免费在线亚洲欧美| 国产精品丝袜在线播放| 亚洲一二av| 日日夜夜免费精品视频| av不卡在线| 精品网站999| 精品精品99| 国产精品不卡| 日韩国产欧美一区二区三区| 人人爽香蕉精品| 久久青草久久| 日韩av一级| 国产一区白浆| 久久先锋影音| 日韩精品免费一区二区夜夜嗨 | 九色porny丨国产首页在线| 国产精品亚洲综合久久| 国产精品视频一区二区三区综合| 日韩不卡一区二区| 国产精品久久久久久久久久白浆 | 国产精品亚洲欧美| 欧美国产日本| 波多野结衣久久精品| 蜜桃tv一区二区三区| 丝袜国产日韩另类美女| 香蕉久久久久久| 久久精品av麻豆的观看方式| 国产精品日本一区二区三区在线 | 综合干狼人综合首页| 亚洲深夜影院| se01亚洲视频 | 一二三区精品| 久久女人天堂| 麻豆高清免费国产一区| 美国av一区二区| 免费成人网www| 欧美日韩尤物久久| 日韩精品电影| 国产精品亚洲欧美一级在线| 亚洲经典在线| 在线日韩视频| 不卡福利视频| 高清一区二区三区av| 国产麻豆精品| 日韩精品一区二区三区免费视频| 久久中文字幕一区二区三区| 日韩精品一级中文字幕精品视频免费观看| 亚洲第一区色| 日韩久久精品| 精品免费av| 97精品一区二区| 精品一区二区男人吃奶| 国产精品videosex极品| 国产精品一区毛片| 麻豆一区二区在线| 国产一区二区三区亚洲|