亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python logging 模塊之 logging.basicConfig

系統(tǒng) 2053 0

文章目錄

  • 1. Python logging 模塊之 logging.basicConfig 用法和參數(shù)詳解
    • 1.1. logging 模塊簡介
    • 1.2. `logging.basicConfig(**kwargs)`
    • 1.3. LogRecord 屬性

1. Python logging 模塊之 logging.basicConfig 用法和參數(shù)詳解

1.1. logging 模塊簡介

??logging 模塊是 Python 內(nèi)置的標(biāo)準(zhǔn)模塊,主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級(jí)、日志保存路徑、日志文件回滾等;相比 print,具備如下優(yōu)點(diǎn):

  1. 可以通過設(shè)置不同的日志等級(jí),在 release 版本中只輸出重要信息,而不必顯示大量的調(diào)試信息;
  2. print 將所有信息都輸出到標(biāo)準(zhǔn)輸出中,嚴(yán)重影響開發(fā)者從標(biāo)準(zhǔn)輸出中查看其它數(shù)據(jù);logging 則可以由開發(fā)者決定將信息輸出到什么地方,以及怎么輸出;
  3. 和 print 相比,logging 是線程安全的。

線程安全 :線程執(zhí)行一段代碼,不會(huì)產(chǎn)生不確定的結(jié)果,那這段代碼就是線程安全的。
??多線程的時(shí)候執(zhí)行 print 應(yīng)該是一行行打印,但是很多字符串打在了一起,為什么?
??說明,print 函數(shù)被打斷了,被線程切換打斷了。print 函數(shù)分兩步,第一步打印字符串,第二步打印換行符,就在這之間,發(fā)生了線程的切換。這說明 print 函數(shù)是 線程不安全 的。

先舉個(gè)例子:

            
              
                import
              
               logging

logging
              
                .
              
              basicConfig
              
                (
              
              level
              
                =
              
              logging
              
                .
              
              INFO
              
                ,
              
              
                format
              
              
                =
              
              
                '%(asctime)s %(filename)s %(levelname)s %(message)s'
              
              
                ,
              
              
                    datefmt
              
                =
              
              
                '%a %d %b %Y %H:%M:%S'
              
              
                ,
              
              
                    filename
              
                =
              
              
                'my.log'
              
              
                ,
              
              
                    filemode
              
                =
              
              
                'w'
              
              
                )
              
              

logging
              
                .
              
              info
              
                (
              
              
                'This is a info.'
              
              
                )
              
              
logging
              
                .
              
              debug
              
                (
              
              
                'This is a debug message.'
              
              
                )
              
              
logging
              
                .
              
              warning
              
                (
              
              
                'This is a warning.'
              
              
                )
              
              
                # 輸出到同目錄下 my.log 文件中的內(nèi)容:
              
              
Wed 
              
                05
              
               Jun 
              
                2019
              
              
                22
              
              
                :
              
              
                25
              
              
                :
              
              
                32
              
               test
              
                .
              
              py INFO This 
              
                is
              
               a info
              
                .
              
              
Wed 
              
                05
              
               Jun 
              
                2019
              
              
                22
              
              
                :
              
              
                25
              
              
                :
              
              
                32
              
               test
              
                .
              
              py WARNING This 
              
                is
              
               a warning
              
                .
              
            
          

??請(qǐng)讀者根據(jù)以下參數(shù)自行解讀為什么會(huì)有這樣的輸出。

1.2. logging.basicConfig(**kwargs)

??使用默認(rèn)格式化程序創(chuàng)建 StreamHandler 并將其添加到根日志記錄器中,從而完成日志系統(tǒng)的基本配置。如果沒有為根日志程序定義處理程序,debug()、info()、warning()、error()和 critical() 函數(shù)將自動(dòng)調(diào)用 basicConfig()。
??如果根日志記錄器已經(jīng)為其配置了處理程序,則此函數(shù)不執(zhí)行任何操作。

注解:這個(gè)函數(shù)應(yīng)該在其他線程啟動(dòng)之前從主線程調(diào)用。在 2.7.1 和 3.2 之前的 Python 版本中,如果從多個(gè)線程調(diào)用此函數(shù),則可能(在很少的情況下)不止一次地將處理程序添加到根日志記錄器中,從而導(dǎo)致意想不到的結(jié)果,比如在日志中消息被復(fù)寫。

??支持以下關(guān)鍵字參數(shù)。

格式 描述
filename 指定使用 指定的文件名 而不是 StreamHandler 創(chuàng)建 FileHandler。
filemode 如果指定 filename,則以此模式打開文件(‘r’、‘w’、‘a(chǎn)’)。默認(rèn)為“a”。
format 為處理程序使用指定的格式字符串。
datefmt 使用 time.strftime() 所接受的指定日期/時(shí)間格式。
style 如果指定了格式,則對(duì)格式字符串使用此樣式。’%’ 用于 printf 樣式、’{’ 用于 str.format()、’$’ 用于 string。默認(rèn)為“%”。
level 將根記錄器級(jí)別設(shè)置為指定的級(jí)別。默認(rèn)生成的 root logger 的 level 是 logging.WARNING,低于該級(jí)別的就不輸出了。級(jí)別排序:CRITICAL > ERROR > WARNING > INFO > DEBUG。(如果需要顯示所有級(jí)別的內(nèi)容,可將 level=logging.NOTSET)
stream 使用指定的流初始化 StreamHandler。注意,此參數(shù)與 filename 不兼容——如果兩者都存在,則會(huì)拋出 ValueError。
handlers 如果指定,這應(yīng)該是已經(jīng)創(chuàng)建的處理程序的迭代,以便添加到根日志程序中。任何沒有格式化程序集的處理程序都將被分配給在此函數(shù)中創(chuàng)建的默認(rèn)格式化程序。注意,此參數(shù)與 filename 或 stream 不兼容——如果兩者都存在,則會(huì)拋出 ValueError。

1.3. LogRecord 屬性

??LogRecord 有許多屬性,其中大部分是從構(gòu)造函數(shù)的參數(shù)派生出來的。(注意,名稱并不總是與 LogRecord 構(gòu)造函數(shù)參數(shù)和 LogRecord 屬性完全對(duì)應(yīng)。)這些屬性可用于將記錄中的數(shù)據(jù)合并到格式字符串中。下表以 % 樣式的格式字符串列出(按字母順序)屬性名、它們的含義和對(duì)應(yīng)的占位符。

??如果您使用 {} 格式 (str.format()),可以使用 {attrname} 作為格式字符串中的占位符。如果您正在使用 $-formatting (string.Template),請(qǐng)使用 ${attrname} 格式。當(dāng)然,在這兩種情況下,都要用想要使用的實(shí)際屬性名替換 attrname。

??在使用 {} 格式的情況下,您可以通過將它們放在屬性名后面來指定格式化標(biāo)志,并使用冒號(hào)將它們與屬性名分隔開。例如 {msecs:03d} 的占位符將把毫秒值 4 格式化為 004。有關(guān)可用選項(xiàng)的詳細(xì)信息,請(qǐng)參閱 str.format() 文檔。

屬性名稱 格式 描述
args 您不應(yīng)該自己設(shè)置此格式。 參數(shù)組成的元組合并到 msg 中以生成消息,或 dict,其值用于合并(當(dāng)只有一個(gè)參數(shù)時(shí),它是一個(gè)字典)。
asctime %(asctime)s 創(chuàng)建日志記錄時(shí)的時(shí)間(以便于人識(shí)讀的格式)。默認(rèn)情況下,它的形式是“2003-07-08 16:49:45,896”(逗號(hào)后面的數(shù)字是時(shí)間的毫秒部分)。
created %(created)f 創(chuàng)建日志記錄的時(shí)間(由 time.time() 函數(shù)返回的時(shí)間戳(1970紀(jì)元后經(jīng)過的浮點(diǎn)秒數(shù)))。
exc_info 您不應(yīng)該自己設(shè)置此格式。 異常元組(如 sys.exc_info),如果沒有發(fā)生異常,則為 None。
filename %(filename)s 路徑名 文件名 部分。
funcName %(funcName)s 包含日志記錄調(diào)用的函數(shù)的名稱。
levelname %(levelname)s 消息的文本日志級(jí)別(‘DEBUG’、‘INFO’、‘WARNING’、‘ERROR’、‘CRITICAL’)。
levelno %(levelno)s 消息的數(shù)字日志級(jí)別(NOTSET-0、DEBUG-10、INFO-20、WARNING-30、ERROR-40、CRITICAL-50)。
lineno %(lineno)d 發(fā)出日志調(diào)用的源行號(hào)(如果可用)。
message %(message)s 已記錄的消息,計(jì)算為 msg % args。這是在調(diào)用 Formatter.format() 時(shí)設(shè)置的。
module %(module)s 模塊(文件名的名稱部分)。
msecs %(msecs)d 創(chuàng)建日志記錄時(shí)的毫秒部分。
msg 您不應(yīng)該自己設(shè)置此格式。 在原始日志記錄調(diào)用中傳遞的格式字符串。與 args 合并以生成消息或任意對(duì)象(請(qǐng)參閱使用任意對(duì)象作為消息)。
name %(name)s 用于記錄調(diào)用的日志程序的名稱。
pathname %(pathname)s 發(fā)出日志調(diào)用的源文件的完整路徑名(如果可用)。
process %(process)d 進(jìn)程ID(如果可用)。
processName %(processName)s 進(jìn)程名(如果可用)。
relativeCreated %(relativeCreated)d 創(chuàng)建日志記錄的時(shí)間(以毫秒為單位)相對(duì)于加載日志模塊的時(shí)間。
stack_info 您不應(yīng)該自己設(shè)置此格式。 堆棧幀信息(在可用的情況下)從當(dāng)前線程的堆棧底部開始,直到并包括導(dǎo)致創(chuàng)建此記錄的日志調(diào)用的堆棧幀。
thread %(thread)d 線程ID(如果可用)。
threadName %(threadName)s 線程名(如果可用)。

??以上內(nèi)容翻譯整理自 Python 官方文檔 16.6. logging — Logging facility for Python — Python 3.6.8 documentation


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 五月色综合 | 欧洲a老妇女黄大片 | 日本一级毛片免费 | 又粗又大的机巴好爽欧美 | 日韩精品欧美高清区 | 毛片大全高清免费 | 亚洲人成影院在线高清 | 日韩日b | 九九视频只有精品 | 日韩免费在线视频观看 | 91美女啪啪 | 国产精品国产精品 | 高清黄色直接看 | 亚洲一区二区三区免费视频 | 全亚洲最大的免费私人影剧院 | 精品国产区 | 黄片毛片在线观看 | 欧美二区三区 | 97在线碰碰观看免费高清 | 亚洲成人中文字幕 | 女孕学护士一级毛片 | 亚洲欧美精品 | 国产国语对白一级毛片 | 好吊妞人成免费视频观看 | 美国毛片一级视频在线aa | 中文精品爱久久久国产 | 91私拍| 久久综合九色综合网站 | 久久久麻豆 | 手机看片福利盒子久久 | 久久久青草青青国产亚洲免观 | 久久久久久全国免费观看 | 亚洲毛片儿 | 欧美一区二区三区国产精品 | 成 人 黄 色视频免费播放 | 久热这里只精品99国产6_99 | 欧美一级毛片一 | 奇米影视亚洲春色77777 | 亚洲在线视频一区 | 国产在线拍国产拍拍偷 | 亚洲一级黄色 |