? ? logging模塊是Python內置的標準模塊,主要用于輸出運行日志,可以設定輸出日志的等級、日志保存路徑、日志檔案回滾等,其主要優點如下:
- 1.可以通過設定不同的日志等級,在release版本中只輸出重要資訊,而不必顯示大量的除錯資訊;
- 2.尤其是代碼運行在服務器上,當出現問題時可以通過查看日志進行分析,
? ? logging模塊基本使用:
- 設定logger名稱
logger = logging.getLogger(log_name)
- 設定log級別
logger.setLevel(logging.info)
- 創建一個handler,用于寫入日志檔案
fh = logging.FileHandler(log_file)
- 設定日志級別,默認為logging.WARNING
fh.setLevel(logLevel[log_level])
- 定義handler的輸出格式
formatter = logging.Formatter('%(asctime)s %(name)s [line:%(lineno)d] %(levelname)s %(message)s')
fh.setFormatter(formatter)
- 添加handler
logger.addHandler(fh)
- 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: 列印日志資訊
? ? 示例代碼如下:
import logging
import datetime
import os
# 定義日志級別字典
logLevelDic={
"info":logging.INFO,
"debug":logging.DEBUG,
"warning":logging.WARNING,
"error":logging.ERROR
}
# 日志保存路徑
logSavePath=os.path.join(os.getcwd(),"logs")
if not os.path.exists(logSavePath):
os.makedirs(logSavePath,exist_ok=True)
# 當前時間
curTime=datetime.datetime.now().strftime("%Y%m%d")
# 保存的日志的完整名稱
logFile=os.path.join(logSavePath,curTime+".SADCI.log")
# 日志級別
logLevel="error"
class Logger:
def __init__(self,logFile=logFile,logLevel=logLevelDic["error"]):
self.logFile=logFile
self.logLevel=logLevel
# 設定logger名稱
self.logger=logging.getLogger()
# 設定引數級別
self.logger.setLevel(self.logLevel)
self.formatter=logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
# 判斷handlers是否存在
if not self.logger.handlers:
# 寫入控制臺
consoleStream=logging.StreamHandler()
consoleStream.setLevel(self.logLevel)
consoleStream.setFormatter(self.formatter)
# 寫入檔案
fileStream=logging.FileHandler(self.logFile,mode="a")
fileStream.setLevel(self.logLevel)
fileStream.setFormatter(self.formatter)
self.logger.addHandler(consoleStream)
self.logger.addHandler(fileStream)
def MyLogger():
return Logger(logFile=logFile,logLevel=logLevelDic[logLevel]).logger
if __name__ == '__main__':
MyLogger().error("test logg")
本文同步在微信訂閱號上發布,如各位小伙伴們喜歡我的文章,也可以關注我的微信訂閱號:woaitest,或掃描下面的二維碼添加關注:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/153387.html
標籤:Python
