python----打印日志信息(logging模塊)


日志級別

  • DEBUG:程序調試bug時使用
  • INFO:程序正常運行時使用
  • WARNING:程序未按預期運行時使用,但並不是錯誤,如:用戶登錄密碼錯誤
  • ERROR:程序出錯誤時使用,如:IO操作失敗
  • CRITICAL:特別嚴重的問題,導致程序不能再繼續運行時使用,如:磁盤空間為空,一般很少使 用

  默認的是WARNING等級,當在WARNING或WARNING之上等級的才記錄日志信息。

  日志等級從低到高的順序是: DEBUG < INFO < WARNING < ERROR < CRITICAL

 

1 import logging
2 
3 logging.debug("This is a debug level log")
4 logging.info("This is a info level log")
5 logging.warning("This is a warning level log")
6 logging.error("This is a error level log")
7 logging.critical("This is a critical level log")

運行結果

注:日志信息只顯示了大於等於WARNING級別的日志,這說明默認的日志級別設置為WARNING

 

logging日志等級和輸出格式的設置,且日志信息保存到日志文件

 1 import logging
 2 
 3 logging.basicConfig(
 4     filename="log.txt",
 5     format='%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s',
 6     level=10,
 7     filemode="w",
 8     datefmt='%m/%d/%Y %I:%M:%S'
 9 )
10 logging.debug("This is a debug level log")
11 logging.info("This is a info level log")
12 logging.warning("This is a warning level log")
13 logging.error("This is a error level log")
14 logging.critical("This is a critical level log")

運行結果

 

 

 logging.basicConfig函數各參數:

  • filename:表示文件名
  • filemode:和file函數意義相同,指定日志文件的打開模式,'w'或'a'。參數為‘w’表示每次的日志信息都覆蓋掉之前的
  • format:表示日志的輸出格式和內容, 參數說明:
    • %(asctime)s: 打印日志的時間
    • %(levelno)s: 打印日志級別的數值
    • %(pathname)s: 打印當前執行程序的路徑
    • %(filename)s: 打印當前執行程序名
    • %(funcName)s: 打印日志的當前函數
    • %(lineno)d: 打印日志的當前行號
    • %(thread)d: 打印線程ID
    • %(threadName)s: 打印線程名稱
    • %(levelname)s: 打印日志級別名稱
    • %(message)s: 打印日志信息
    • %(process)d: 打印進程ID
  • datefmt:表示自定義時間格式
  • level:表示設置的日志等級
    • FATAL = CRITICAL = 50
    • ERROR = 40

    • WARN = WARNING = 30

    • INFO = 20

    • DEBUG = 10

    • NOTSET = 0
  • stream: 指定將日志的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略

 

日志寫入的函數:

 1 import logging
 2 
 3 def log(log_content):
 4     # 定義文件
 5     logFile = logging.FileHandler('logInfo.txt', 'a')
 6     # log格式
 7     fmt = logging.Formatter(fmt = '%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s')
 8     logFile.setFormatter(fmt)
 9 
10     # 定義日志
11     logger = logging.Logger('logTest', level=logging.DEBUG)
12     logger.addHandler(logFile)
13     logger.info(log_content)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM