日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Log 日志的使用与重要性

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Log 日志的使用与重要性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發過程中出現bug是必不可免的,你會怎樣debug?從第1行代碼開始看么?還是有個文件里面記錄著哪里錯了更方便呢!!!log日志

Python中有個logging模塊可以完成相關信息的記錄,在debug時用它往往事半功倍

1. 日志級別

日志一共分成5個等級,從低到高分別是:

  • DEBUG
  • INFO
  • WARNING
  • ERROR
  • CRITICAL
  • 說明:

    • DEBUG:詳細的信息,通常只出現在診斷問題上
    • INFO:確認一切按預期運行
    • WARNING:一個跡象表明,一些意想不到的事情發生了,或表明一些問題在不久的將來(例如。磁盤空間低”)。這個軟件還能按預期工作。
    • ERROR:更嚴重的問題,軟件沒能執行一些功能
    • CRITICAL:一個嚴重的錯誤,這表明程序本身可能無法繼續運行

    這5個等級,也分別對應5種打日志的方法: debug 、info 、warning 、error 、critical。默認的是WARNING,當在WARNING或之上時才被跟蹤。

    2. 日志輸出

    有兩種方式記錄跟蹤,一種輸出控制臺,另一種是記錄到文件中,如日志文件。

    2.1、將日志輸出到控制臺

    比如,log1.py 如下:

    import logging logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') # 開始使用log功能 logging.info('這是 loggging info message') logging.debug('這是 loggging debug message') logging.warning('這是 loggging a warning message') logging.error('這是 an loggging error message') logging.critical('這是 loggging critical message')

    運行結果

    2017-11-06 23:07:35,725 - log1.py[line:9] - WARNING: 這是 loggging a warning message 2017-11-06 23:07:35,725 - log1.py[line:10] - ERROR: 這是 an loggging error message 2017-11-06 23:07:35,725 - log1.py[line:11] - CRITICAL: 這是 loggging critical message

    說明

    通過logging.basicConfig函數對日志的輸出格式及方式做相關配置,上面代碼設置日志的輸出等級是WARNING級別,意思是WARNING級別以上的日志才會輸出。另外還制定了日志輸出的格式。

    注意,只要用過一次log功能再次設置格式時將失效,實際開發中格式肯定不會經常變化,所以剛開始時需要設定好格式

    2.2、將日志輸出到文件

    我們還可以將日志輸出到文件,只需要在logging.basicConfig函數中設置好輸出文件的文件名和寫文件的模式。

    log2.py 如下:

    import logging logging.basicConfig(level=logging.WARNING, filename='./log.txt', filemode='w', format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') # use logging logging.info('這是 loggging info message') logging.debug('這是 loggging debug message') logging.warning('這是 loggging a warning message') logging.error('這是 an loggging error message') logging.critical('這是 loggging critical message')

    運行效果

    python@ubuntu: cat log.txt 2017-11-06 23:10:44,549 - log2.py[line:10] - WARNING: 這是 loggging a warning message 2017-11-06 23:10:44,549 - log2.py[line:11] - ERROR: 這是 an loggging error message 2017-11-06 23:10:44,549 - log2.py[line:12] - CRITICAL: 這是 loggging critical message

    2.3、既要把日志輸出到控制臺, 還要寫入日志文件

    這就需要一個叫作Logger 的對象來幫忙,下面將對他進行詳細介紹,現在這里先學習怎么實現把日志既要輸出到控制臺又要輸出到文件的功能。

    import logging # 第一步,創建一個logger logger = logging.getLogger() logger.setLevel(logging.INFO) # Log等級總開關 # 第二步,創建一個handler,用于寫入日志文件 logfile = './log.txt' fh = logging.FileHandler(logfile, mode='a') # open的打開模式這里可以進行參考 fh.setLevel(logging.DEBUG) # 輸出到file的log等級的開關 # 第三步,再創建一個handler,用于輸出到控制臺 ch = logging.StreamHandler() ch.setLevel(logging.WARNING) # 輸出到console的log等級的開關 # 第四步,定義handler的輸出格式 formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s") fh.setFormatter(formatter) ch.setFormatter(formatter) # 第五步,將logger添加到handler里面 logger.addHandler(fh) logger.addHandler(ch) # 日志 logger.debug('這是 logger debug message') logger.info('這是 logger info message') logger.warning('這是 logger warning message') logger.error('這是 logger error message') logger.critical('這是 logger critical message')

    運行時終端的輸出結果:

    2017-11-06 23:14:04,731 - log3.py[line:28] - WARNING: 這是 logger warning message 2017-11-06 23:14:04,731 - log3.py[line:29] - ERROR: 這是 logger error message 2017-11-06 23:14:04,731 - log3.py[line:30] - CRITICAL: 這是 logger critical message

    在log.txt中,有如下數據:

    2017-11-06 23:14:04,731 - log3.py[line:27] - INFO: 這是 logger info message 2017-11-06 23:14:04,731 - log3.py[line:28] - WARNING: 這是 logger warning message 2017-11-06 23:14:04,731 - log3.py[line:29] - ERROR: 這是 logger error message 2017-11-06 23:14:04,731 - log3.py[line:30] - CRITICAL: 這是 logger critical message

    3、日志格式說明

    logging.basicConfig函數中,可以指定日志的輸出格式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: 打印日志信息

    在工作中給的常用格式如下:

    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'

    這個格式可以輸出日志的打印時間,是哪個模塊輸出的,輸出的日志級別是什么,以及輸入的日志內容。

    總結

    以上是生活随笔為你收集整理的Log 日志的使用与重要性的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。