日志模塊logging用法

?

?

一、常用日志記錄場景及最佳解決方案:

?

日志記錄方式

最佳記錄日志方案

普通情況下,在控制臺顯示輸出

print()

報告正常程序操作過程中發生的事件

logging.info()(或者更詳細的logging.debug())

發出有關特定事件的警告

warnings.warn()或者logging.warning()

報告錯誤

彈出異常

在不引發異常的情況下報告錯誤

logging.error(), logging.exception()或者logging.critical()

?

?

?

二、日志等級:

?

logging模塊定義了下表所示的日志級別,按事件嚴重程度由低到高排列(注意是全部大寫!因為它們是常量。):

級別

級別數值

使用時機

DEBUG

10

詳細信息,常用于調試

INFO

20

程序正常運行過程中產生的一些信息

WARNING

30

警告用戶,雖然程序還在正常工作,但有可能發生錯誤

ERROR

40

由于更嚴重的問題,程序已不能執行一些功能了

CRITICAL

50

嚴重錯誤,程序已不能繼續運行

?

?

?

三、logging基本使用方法:

?

產生五種日志級別(WARINGERRORCRITICAL會直接輸出()內的提示語至屏幕)

logging.info('info')

logging.debug('debug')

logging.warning('warning')

logging.error('error')

logging.critical('critical')

?

?

日志系統配置文件(定義日志一些規則)

?

logging.basicConfig(filename='test.log', level=logging.INFO, filemode='a', format='%(levelname)s:%(asctime)s:%(message)s')

?

filename:日志要保存至哪個文件中(定義了這個后日志將不再在屏幕上打印)

level:什么級別以上的日志需要保存

filemode:有"w""a"兩種模式,同open一樣,"a"追加,"w"覆蓋

format:定義日志格式(后面提供日志元素表,建議通過":"將各種日志元素連接成合理的日志格式)

format定義格式時用的日志元素表:

?

日志元素

描述

%(asctime)s

日志產生的時間,默認格式為2003-07-08 16:49:45,896

%(created)f

time.time()生成的日志創建時間戳

%(filename)s

生成日志的程序名

%(funcName)s

調用日志的函數名

%(levelname)s

日志級別 ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')

%(levelno)s

日志級別對應的數值

%(lineno)d

日志所針對的代碼行號(如果可用的話)

%(module)s

生成日志的模塊名

%(msecs)d

日志生成時間的毫秒部分

%(message)s

具體的日志信息

%(name)s

日志調用者

%(pathname)s

生成日志的文件的完整路徑

%(process)d

生成日志的進程ID(如果可用)

%(processName)s

進程名(如果可用)

%(thread)d

生成日志的線程ID(如果可用)

%(threadName)s

線程名(如果可用)

?

?

?

?

四、logging高級用法(讓日志即能寫入文件又能在屏幕打印)

?

包含關系(左邊包含右邊)

記錄器<——處理器<——格式化器

?

import logging

"""

????logging模塊采用了模塊化設計,主要包含四種組件:

????

????Loggers:記錄器,提供應用程序代碼能直接使用的接口;

????Handlers:處理器,將記錄器產生的日志發送至目的地;

????Filters:過濾器,提供更好的粒度控制,決定哪些日志會被輸出;

????Formatters:格式化器,設置日志內容的組成結構和消息字段。

?

"""

# 創建一個記錄器loggers,并設置默認等級

logger = logging.getLogger('jack') ?# jack’位置定義了日志調用者的名字

logger.setLevel(logging.INFO)

?

# 創建兩個處理器handlers(一個發往日志文件、一個發往屏幕),并分別設置他們的日志等級

stream = logging.StreamHandler() ????# 發往屏幕

stream.setLevel(logging.DEBUG) ?????# 定義什么樣級別以上的日志發往屏幕

?

file = logging.FileHandler('test.log') ???# 發往日志文件(需指定文件名稱)

file.setLevel(logging.ERROR) ??# 定義什么樣級別以上的日志發往日志文件

?

# 分別為兩個處理器handlers創建格式化器formatters(可以讓其在屏幕和日志文件中以不同的格式輸出)

formatter_stream = logging.Formatter('%(levelname)s:%(asctime)s:%(message)s')

formatter_file = logging.Formatter('%(name)s:%(levelname)s:%(asctime)s:%(message)s')

?

# 為各個處理器handlers設置相應的格式化器

stream.setFormatter(formatter_stream)

file.setFormatter(formatter_file)

?

# 將所有的處理器handler加入自定義的記錄器logger

logger.addHandler(stream)

logger.addHandler(file)

?

# 測試日志功能

logger.debug('debug')

logger.info('info')

logger.warning('warn')

logger.error('error')

logger.critical('critical')

?

?

轉載于:https://www.cnblogs.com/baihualin/p/10734868.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386977.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386977.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386977.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL 億級數據需求的優化思路(一),交易流水記錄的查詢

對MySQL的性能和億級數據的處理方法思考&#xff0c;以及分庫分表到底該如何做&#xff0c;在什么場景比較合適&#xff1f; 比如銀行交易流水記錄的查詢 限鹽少許&#xff0c;上實際實驗過程&#xff0c;以下是在實驗的過程中做一些操作&#xff0c;以及踩過的一些坑&#…

RUNOOB python練習題2

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例2 題干 : 企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元時&#xff0c;獎金可提10%&#xff1b;利潤高于10萬元&#xff0c;低于20萬元時&#xff0c;低于10萬元的部分按10%提成&#xff0c;高于10萬元的…

dubbo負載均衡策略和集群容錯策略

dubbo負載均衡策略 random loadbalance 默認情況下&#xff0c;dubbo是random load balance隨機調用實現負載均衡&#xff0c;可以對provider不同實例設置不同的權重&#xff0c;會按照權重來負載均衡&#xff0c;權重越大分配流量越高&#xff0c;一般就用這個默認的就可以了。…

MySQL 億級數據需求的優化思路(二),100億數據,1萬字段屬性的秒級檢索

最近在研究億級數據的時候&#xff0c;無意中看到了一個關于寫58同城的文章 https://blog.csdn.net/admin1973/article/details/55251499?fromtimeline 其實上面講的versionext的方式以及壓縮json的思路&#xff0c;對于我來講都可以看得懂&#xff0c;想得通&#xff0c;其…

RUNOOB python練習題3

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例3 拿到題目就寫了如下代碼&#xff0c;思路是因為使用**0.5進行開平方操作時&#xff0c;python會將數據類型自動轉換為float單精度浮點型。這里利用提取其整數部分&#xff0c;來判斷這個數是否是完全平方數。 z…

使用git將項目上傳到github(最簡單方法)

使用git將項目上傳到github&#xff08;最簡單方法&#xff09; 首先你需要一個github賬號&#xff0c;所有還沒有的話先去注冊吧&#xff01; https://github.com/ 我們使用git需要先安裝git工具&#xff0c;這里給出下載地址&#xff0c;下載后一路直接安裝即可&#xff1…

數據庫 概念詳解

數據庫 概念詳解 一、MySQL MySQL 事務 MySQL 鎖 MySQL 二、Redis 三、MongoDB 四、Memcached 轉載于:https://www.cnblogs.com/guozepingboke/p/10743648.html

RUNOOB python練習題4

用來練手的python習題其四&#xff0c; 原題鏈接: python練習實例4 題干: 輸入某年某月某日&#xff0c;判斷這一天是這一年的第幾天&#xff1f; 這個題目比較簡單&#xff0c;只需要注意閏年和非閏年的區別就可以了。我這里使用numpy矩陣存儲每個月的天數&#xff0c;之后用…

GitHub入門:如何上傳與下載工程?

由于經常要在家寫代碼&#xff0c;所以需要有個能夠方便訪問代碼管理工具。最近嘗試了一下GitHub。經過了一翻糾結之后&#xff0c;基本上掌握了他的使用方式。 要使用GitHub需要首先在其網站上進行注冊。其官方網站是https://github.com/。注冊的流程在這里就不多少了&#x…

如何解決PIP命令不可用

今天想用PIP裝一個python包&#xff0c;發現PIP報錯&#xff0c;不是內部或外部命令。。。 遇事百度&#xff0c;有兩種說法&#xff0c;一&#xff0c;沒安裝包&#xff0c;不管那么多命令執行了再說 在命令行輸入&#xff1a;python -m ensurepip 將pip.exe文件下載下來 再pi…

RUNOOB python練習題5

用來練手的python 練習題其五&#xff0c;原鏈接 : python練習實例5 題干 : 輸入三個整數x,y,z&#xff0c;請把這三個數由小到大輸出。 又是非常簡單的排序算法&#xff0c;只要使用numpy矩陣的排序方法或者使用python list的排序算法就可以輕松解決。 源代碼如下 : import …

初步使用github,并上傳下載文件

使用GitHub需要先注冊GitHub的賬號,登陸進去 然后開始創建項目 start a project 創建完成,開始生成公私鑰,可以不必每次都要輸密碼 ssh-keygen -t rsa -C "mghxy123163.com" //填寫email地址&#xff0c;然后一直“回車”ok 然后把公鑰導入GitHub中的key里面去,也…

NOIP2000提高組復賽C 單詞接龍

題目鏈接&#xff1a;https://ac.nowcoder.com/acm/contest/248/C 題目大意&#xff1a; 略 分析&#xff1a; 注意點&#xff1a;1.前綴和后綴的公共部分應該選最短的。2.如果兩個字符串前綴和后綴的公共部分恰好是其中一個字符串&#xff0c;那么這兩個字符串不能合并。 代碼…

右鍵Git Bash Here不見了怎么辦,手把手教你還原!

第一步&#xff0c;window R&#xff0c;輸入regedit回車進入注冊表 依次進入HKEY_CLASSES_ROOT —-》 Directory —-》Background —-》 shell 右鍵點擊shell&#xff0c;選擇新建&#xff0c;然后選擇項&#xff0c;命名為 Git Bash Here&#xff0c;成功后進入桌面右鍵發現…

RUNOOB python練習題6 斐波那契數列

用來練手的python 練習題其六&#xff0c;原鏈接 : python練習實例6 題干 : 斐波那契數列 斐波那契數列可以說是很好的遞歸理解工具了&#xff0c;這里就用遞歸實現一下斐波那契數列。 源代碼如下: # 返回fibonacci數列中某一項的數值 def Fibonacci(n):if n 1:return 1eli…

linux 單用戶密碼修改

1.啟動系統&#xff0c;并在GRUB2啟動屏顯時&#xff0c;按下e鍵進入編輯模式。 2.在linux16/inux/linuxef所在參數行ro更改為init/sysroot/bin/sh 3.按Crlx啟動到shell. 4.掛載文件系統為可寫模式: mount -o remount &#xff0c;rw /sysroot 5換根chroot /sysroot 6.運行pass…

github windows客戶端

方法/步驟 1 1. 首先到官網下載Github客戶端 2 2. 點擊上圖紅框的按鈕開始下載客戶端。 3 3. 雙擊下載好的客戶端&#xff0c;開始安裝。 4 雙擊之后出現一個框 5 之后等待一段時間&#xff0c;出現一個在線下載界面 6 4. 在線下載完成之后開始進行安裝。安裝完成之后…

賦值語句 變量的地址相關 : RUNOOB python練習題7

用來練手的python 練習題&#xff0c;原鏈接 : python練習實例7 練習實例7非常的簡單也有意思。題干 : 將一個列表的數據復制到另一個列表中。 完成這個操作的代碼非常簡單&#xff0c;即使是我這樣的初學者應該也是一語道破&#xff0c;賦值語句嘛。但這里我們就列舉出幾種不…

Web標準的概念及組成

一周更新兩個或三個關于web前端的知識點&#xff0c;歡迎感興趣的小伙伴們一起學習討論1、WEB標準是網頁制作的標準&#xff0c;它不是一個標準&#xff0c;它是根據網頁的不同組成部分生成的一系列標準。這些標準大部分由W3C起草發布&#xff0c;也有部分標準由ECMA起草發布。…

Fiddler簡介及安裝和HTTPS的解決

Fiddler簡介&#xff1a; 一個很強大的抓包工具&#xff0c;類似Charles 1.安裝&#xff1a; Filddler官網&#xff1a;點擊打開鏈接 我安裝的是filddler4&#xff1a;點擊打開鏈接 直接下載文件&#xff0c;然后一路下一步就可以了 1.下載文件&#xff1a; 2.安裝文件一…