如何記錄Python腳本的運(yùn)行日志-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)如何記錄Python腳本的運(yùn)行日志的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營(yíng)銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊(duì)及專業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。

一、logging模塊

Python中有一個(gè)模塊logging,可以直接記錄日志

#  日志級(jí)別
# CRITICAL 50
# ERROR  40
# WARNING 30
# INFO   20
# DEBUG  10

logging.basicConfig()函數(shù)中的具體參數(shù):

filename:   指定的文件名創(chuàng)建FiledHandler,這樣日志會(huì)被存儲(chǔ)在指定的文件中;
filemode:   文件打開方式,在指定了filename時(shí)使用這個(gè)參數(shù),默認(rèn)值為“w”還可指定為“a”;
format:      指定handler使用的日志顯示格式;
datefmt:    指定日期時(shí)間格式。,格式參考strftime時(shí)間格式化(下文)
level:        設(shè)置rootlogger的日志級(jí)別
stream:     用指定的stream創(chuàng)建StreamHandler??梢灾付ㄝ敵龅絪ys.stderr,sys.stdout或者文件,默認(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ù)的模塊的完整路徑名,可能沒有

%(filename)s

調(diào)用日志輸出函數(shù)的模塊的文件名

%(module)s

調(diào)用日志輸出函數(shù)的模塊名

%(funcName)s

調(diào)用日志輸出函數(shù)的函數(shù)名

%(lineno)d

調(diào)用日志輸出函數(shù)的語句所在的代碼行

%(created)f

當(dāng)前時(shí)間,用UNIX標(biāo)準(zhǔn)的表示時(shí)間的浮 點(diǎn)數(shù)表示

%(relativeCreated)d

輸出日志信息時(shí)的,自Logger創(chuàng)建以 來的毫秒數(shù)

%(asctime)s

字符串形式的當(dāng)前時(shí)間。默認(rèn)格式是 “2003-07-08 16:49:45,896”。逗號(hào)后面的是毫秒

%(thread)d

線程ID。可能沒有

%(threadName)s

線程名。可能沒有

%(process)d

進(jìn)程ID??赡軟]有

%(message)s

用戶輸出的消息

二、logging模塊測(cè)試

1、打印日志到標(biāo)準(zhǔn)輸出中

import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')

輸出結(jié)果

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe D:/pyworkpeace/tupian.py 'https://www.tianyancha.com/login'
WARNING:root:warning message

Process finished with exit code 0

可以看出默認(rèn)情況下Python的logging模塊將日志打印到了標(biāo)準(zhǔn)輸出中,且只顯示了大于等于WARNING級(jí)別的日志。默認(rèn)的日志的格式為:

日志級(jí)別:Logger名稱:用戶輸出消息

2、將日志文件輸入到文件中

import os
logging.basicConfig(filename=os.path.join(os.getcwd(),'log.txt'),level=logging.DEBUG)
logging.debug('this is a message')

運(yùn)行這三行代碼后會(huì)在安裝Python的目錄中出現(xiàn)一個(gè)log.txt文件,文件內(nèi)容

DEBUG:root:this is a message
DEBUG:root:debug message

3、自定義格式,輸出日志文件

# -*-coding:utf-8-*-

import logging


def console_out(logFilename):
  ''''' Output log to file and console '''
  # Define a Handler and set a format which output to file
  logging.basicConfig(
    level=logging.DEBUG, # 定義輸出到文件的log級(jí)別,大于此級(jí)別的都被輸出
    format='%(asctime)s %(filename)s : %(levelname)s %(message)s', # 定義輸出log的格式
    datefmt='%Y-%m-%d %A %H:%M:%S', # 時(shí)間
    filename=logFilename, # log文件名
    filemode='w') # 寫入模式“w”或“a”
  # Define a Handler and set a format which output to console
  console = logging.StreamHandler() # 定義console handler
  console.setLevel(logging.INFO) # 定義該handler級(jí)別
  formatter = logging.Formatter('%(asctime)s %(filename)s : %(levelname)s %(message)s') # 定義該handler格式
  console.setFormatter(formatter)
  # Create an instance
  logging.getLogger().addHandler(console) # 實(shí)例化添加handler

  # Print information       # 輸出日志級(jí)別
  logging.debug('logger debug message')
  logging.info('logger info message')
  logging.warning('logger warning message')
  logging.error('logger error message')
  logging.critical('logger critical message')


if __name__ == "__main__":
  console_out('logging.log')

輸出結(jié)果:

此時(shí)也會(huì)自動(dòng)生成一個(gè)日志文件,日志文件和運(yùn)行文件在同一個(gè)文件夾中,文件名logging.log

2017-10-23 Monday 11:37:59 hgghf : DEBUG logger debug message
2017-10-23 Monday 11:37:59 hgghf : INFO logger info message
2017-10-23 Monday 11:37:59 hgghf : WARNING logger warning message
2017-10-23 Monday 11:37:59 hgghf : ERROR logger error message
2017-10-23 Monday 11:37:59 hgghf : CRITICAL logger critical message

修改輸出路徑:

filename='/tmp/test1.log', # log文件名

當(dāng)將腳本中這行代碼換一下,那么我們輸出日志的路徑地址就換成了D:\tmp

下面的方式同樣可以達(dá)到上述結(jié)果

 4、自定義輸出位置

import logging 
logging.basicConfig(level=logging.DEBUG, 
          format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', 
          datefmt='%a, %d %b %Y %H:%M:%S', 
          filename='/tmp/test.log', 
          filemode='w') 
 
logging.debug('debug message') 
logging.info('info message') 
logging.warning('warning message') 
logging.error('error message') 
logging.critical('critical message')

由于運(yùn)行腳本放在D:\pyworkpeace\下,輸出文件在D盤tmp文件夾下test.log,內(nèi)容如下:

Mon, 23 Oct 2017 15:00:05 tupian.py[line:11] DEBUG debug message
Mon, 23 Oct 2017 15:00:05 tupian.py[line:12] INFO info message
Mon, 23 Oct 2017 15:00:05 tupian.py[line:13] WARNING warning message
Mon, 23 Oct 2017 15:00:05 tupian.py[line:14] ERROR error message
Mon, 23 Oct 2017 15:00:05 tupian.py[line:15] CRITICAL critical message

感謝各位的閱讀!關(guān)于“如何記錄Python腳本的運(yùn)行日志”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章標(biāo)題:如何記錄Python腳本的運(yùn)行日志-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://muchs.cn/article26/djiojg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站商城網(wǎng)站、標(biāo)簽優(yōu)化、品牌網(wǎng)站制作網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)