記錄Python腳本的運(yùn)行日志的方法
一、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模塊測試
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 messageProcess 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
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python中l(wèi)ogging日志記錄到文件及自動(dòng)分割的操作代碼
- python3中的logging記錄日志實(shí)現(xiàn)過程及封裝成類的操作
- Python loguru日志庫之高效輸出控制臺(tái)日志和日志記錄
- python多進(jìn)程下實(shí)現(xiàn)日志記錄按時(shí)間分割
- python logging重復(fù)記錄日志問題的解決方法
- Python Logging 日志記錄入門學(xué)習(xí)
- Python 記錄日志的靈活性和可配置性介紹
- python日志記錄模塊實(shí)例及改進(jìn)
- Python記錄詳細(xì)調(diào)用堆棧日志的方法
- Python 程序員必須掌握的日志記錄
相關(guān)文章
在Linux系統(tǒng)上通過uWSGI配置Nginx+Python環(huán)境的教程
這篇文章主要介紹了在Linux系統(tǒng)上通過uWSGI配置Nginx+Python環(huán)境的教程,示例中為Ubuntu系統(tǒng)并且默認(rèn)使用系統(tǒng)中自帶的Python解釋器,需要的朋友可以參考下2015-12-12
python iloc和loc切片的實(shí)現(xiàn)
本文主要介紹了python iloc和loc切片的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
基于keras輸出中間層結(jié)果的2種實(shí)現(xiàn)方式
今天小編就為大家分享一篇基于keras輸出中間層結(jié)果的2種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python使用Selenium實(shí)現(xiàn)模擬登錄的示例代碼
Selenium(本文基于python3.8)是一個(gè)功能強(qiáng)大的自動(dòng)化測試工具,它可以用于模擬用戶在瀏覽器中的行為,比如點(diǎn)擊、輸入、滾動(dòng)等等,本教程將詳細(xì)介紹如何使用Python編寫一個(gè)模擬登錄地爬蟲,使用XPath等多種元素匹配方法,需要的朋友可以參考下2023-08-08
python抓取某汽車網(wǎng)數(shù)據(jù)解析html存入excel示例
python抓取某汽車網(wǎng)經(jīng)銷商信息網(wǎng)頁數(shù)據(jù)解析html,這里提供一個(gè)示例演示,大家可以根據(jù)需要分析自己網(wǎng)站的數(shù)據(jù)2013-12-12
最新解決沒有NVSMI文件夾以及nvidia-smi‘?不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件
這篇文章主要介紹了解決沒有NVSMI文件夾以及nvidia-smi‘?不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件,本文通過兩種問題分析給大家分享解決方法,需要的朋友可以參考下2023-01-01

