天天看點

logging——日志——簡單概念簡介

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還要高,嚴重錯誤,表明程式本身可能無法繼續運作。      
logging——日志——簡單概念簡介

=========================================================================================================================

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      
logging——日志——簡單概念簡介

======================================================================================================

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       
logging——日志——簡單概念簡介

=============================================================================================================================

一:列印到工作台:

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")      
logging——日志——簡單概念簡介

二:輸出到指定檔案夾:

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")      
logging——日志——簡單概念簡介

 注意:下面日志檔案是程式建立的,原來桌面裡沒有

logging——日志——簡單概念簡介

===============================================================================================================================

級别排序: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函數進行配置了日志級别和日志内容輸出格式

========================================================================================

logging——日志——簡單概念簡介
logging——日志——簡單概念簡介
logging——日志——簡單概念簡介
logging——日志——簡單概念簡介

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中産生的毫秒部分,可以用這個加上