import logging
logging.debug("debug message") #告警級别最低,隻有在診斷問題時才有興趣的詳細資訊。
logging.info("info message") #告警級别比debug要高,确認事情按預期進行。
logging.warning("warning message") #告警級别比info要高,該模式是預設的告警級别!預示着一些意想不到的事情發生,或在不久的将來出現一些問題(例如“磁盤空間低”)。該軟體仍在正常工作。
logging.error("error message") #告警級别要比warning藥膏,由于一個更嚴重的問題,該軟體還不能執行某些功能。
logging.critical("critical message") #告警級别要比error還要高,嚴重錯誤,表明程式本身可能無法繼續運作。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SY2gjYmJTMjhDZ2YGN0AzN0IDNiJWZwIDMkRmM5Y2Mk9CX2AzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL1M3Lc9CX6MHc0RHaiojIsJye.png)
=========================================================================================================================
import logging
logging.basicConfig(level=logging.DEBUG,
format="%(asctime)s %(name)s %(levelname)s %(message)s",
datefmt = '%Y-%m-%d %H:%M:%S %a' #注意月份和天數不要搞亂了,這裡的格式化符與time子產品相同
)
logging.debug("msg1")
logging.info("msg2")
logging.warning("msg3")
logging.error("msg4")
logging.critical("msg5")
#以上代碼執行結果如下:
2018-05-09 23:37:49 Wed root DEBUG msg1
2018-05-09 23:37:49 Wed root INFO msg2
2018-05-09 23:37:49 Wed root WARNING msg3
2018-05-09 23:37:49 Wed root ERROR msg4
2018-05-09 23:37:49 Wed root CRITICAL msg5
======================================================================================================
import logging
LOG_FORMAT = "%(asctime)s %(name)s %(levelname)s %(pathname)s %(message)s "#配置輸出日志格式
DATE_FORMAT = '%Y-%m-%d %H:%M:%S %a ' #配置輸出時間的格式,注意月份和天數不要搞亂了
logging.basicConfig(level=logging.DEBUG,
format=LOG_FORMAT,
datefmt = DATE_FORMAT ,
filename=r"d:\test.log" #有了filename參數就不會直接輸出顯示到控制台,而是直接寫入檔案
)
logging.debug("msg1")
logging.info("msg2")
logging.warning("msg3")
logging.error("msg4")
logging.critical("msg5")
#日志在d:\目錄下,日志具體内容
2019-08-08 09:54:31 Thu root DEBUG d:\Log.py msg1
2019-08-08 09:54:31 Thu root INFO d:\Log.py msg2
2019-08-08 09:54:31 Thu root WARNING d:\Log.py msg3
2019-08-08 09:54:31 Thu root ERROR d:\Log.py msg4
2019-08-08 09:54:31 Thu root CRITICAL d:\Log.py msg5
=============================================================================================================================
一:列印到工作台:
import logging
logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(pathname)s -%(filename)s-%(funcName)s-%(lineno)d- %(levelname)s - %(message)s ')
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
二:輸出到指定檔案夾:
import logging
logging.basicConfig(filename='C:\\Users\\del\\Desktop\\123456.txt',level=logging.DEBUG, format=' %(asctime)s - %(pathname)s -%(filename)s-%(funcName)s-%(lineno)d- %(levelname)s - %(message)s ')
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
注意:下面日志檔案是程式建立的,原來桌面裡沒有
===============================================================================================================================
級别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG
debug : 列印全部的日志,詳細的資訊,通常隻出現在診斷問題上
info : 列印info,warning,error,critical級别的日志,确認一切按預期運作
warning : 列印warning,error,critical級别的日志,一個迹象表明,一些意想不到的事情發生了,或表明一些問題在不久的将來(例如。磁盤空間低”),這個軟體還能按預期工作
error : 列印error,critical級别的日志,更嚴重的問題,軟體沒能執行一些功能
critical : 列印critical級别,一個嚴重的錯誤,這表明程式本身可能無法繼續運作
注意:如果設定日志為某一個級别,則低于這個級别的就不會輸出。
===================================================================================================================================
format常用格式說明:
%(levelno)s: 列印日志級别的數值
%(levelname)s: 列印日志級别名稱
%(pathname)s: 列印目前執行程式的路徑,其實就是sys.argv[0]
%(filename)s: 列印目前執行程式名
%(funcName)s: 列印日志的目前函數
%(lineno)d: 列印日志的目前行号
%(asctime)s: 列印日志的時間
%(thread)d: 列印線程ID
%(threadName)s: 列印線程名稱
%(process)d: 列印程序ID
%(message)s: 列印日志資訊
=====================================================================================
通過logging.basicConfig函數進行配置了日志級别和日志内容輸出格式
========================================================================================
5、logging.basicConfig()函數包含參數說明
參數名稱 | 描述 |
---|---|
filename | 指定日志輸出目标檔案的檔案名(可以寫檔案名也可以寫檔案的完整的絕對路徑,寫檔案名日志放執行檔案目錄下,寫完整路徑按照完整路徑生成日志檔案), 指定該設定項後日志信心就不會被輸出到控制台了 |
filemode | 指定日志檔案的打開模式,預設為'a'。需要注意的是,該選項要在filename指定時才有效 |
format | 指定日志格式字元串,即指定日志輸出時所包含的字段資訊以及它們的順序。logging子產品定義的格式字段下面會列出。 |
datefmt | 指定日期/時間格式。需要注意的是,該選項要在format中包含時間字段%(asctime)s時才有效 |
level | 指定日志器的日志級别 |
stream | 指定日志輸出目标stream,如sys.stdout、sys.stderr以及網絡stream。需要說明的是,stream和filename不能同時提供,否則會引發 ValueError異常 |
style | Python 3.2中新添加的配置項。指定format格式字元串的風格,可取值為'%'、'{'和'$',預設為'%' |
handlers |
6、logging子產品中定義好的可以用于format格式字元串說明
字段/屬性名稱 | 使用格式 | |
---|---|---|
asctime | %(asctime)s | 将日志的時間構造成可讀的形式,預設情況下是‘2016-02-08 12:00:00,123’精确到毫秒 |
name | %(name)s | 所使用的日志器名稱,預設是'root',因為預設使用的是 rootLogger |
%(filename)s | 調用日志輸出函數的子產品的檔案名; pathname的檔案名部分,包含檔案字尾 | |
funcName | %(funcName)s | 由哪個function發出的log, 調用日志輸出函數的函數名 |
levelname | %(levelname)s | 日志的最終等級(被filter修改後的) |
message | %(message)s | 日志資訊, 日志記錄的文本内容 |
lineno | %(lineno)d | 目前日志的行号, 調用日志輸出函數的語句所在的代碼行 |
levelno | %(levelno)s | 該日志記錄的數字形式的日志級别(10, 20, 30, 40, 50) |
pathname | %(pathname)s | 完整路徑 ,調用日志輸出函數的子產品的完整路徑名,可能沒有 |
process | %(process)s | 目前程序, 程序ID。可能沒有 |
processName | %(processName)s | 程序名稱,Python 3.1新增 |
thread | %(thread)s | 目前線程, 線程ID。可能沒有 |
threadName | 線程名稱 | |
module | %(module)s | 調用日志輸出函數的子產品名, filename的名稱部分,不包含字尾即不包含檔案字尾的檔案名 |
created | %(created)f | 目前時間,用UNIX标準的表示時間的浮點數表示; 日志事件發生的時間--時間戳,就是當時調用time.time()函數傳回的值 |
relativeCreated | %(relativeCreated)d | 輸出日志資訊時的,自Logger建立以 來的毫秒數; 日志事件發生的時間相對于logging子產品加載時間的相對毫秒數 |
msecs | %(msecs)d | 日志事件發生事件的毫秒部分。logging.basicConfig()中用了參數datefmt,将會去掉asctime中産生的毫秒部分,可以用這個加上 |