全部產品
Search
文件中心

Simple Log Service:採集Python日誌

更新時間:Jun 30, 2024

本文介紹如何通過Logtail採集Python日誌。

背景資訊

Python的logging模組提供通用的日誌系統,可供第三方模組或者應用使用。logging模組定義了不同的記錄層級和記錄日誌的方式。logging模組包括logger、handler、filter、formatter四個組件。

在formatter中定義日誌輸出格式,採用%(key)s形式。 樣本如下:

import logging  
import logging.handlers  
LOG_FILE = 'tst.log'  
handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes = 1024*1024, backupCount = 5) # 執行個體化handler   
fmt = '%(asctime)s - %(filename)s:%(lineno)s - %(levelno)s %(levelname)s %(pathname)s %(module)s %(funcName)s %(created)f %(thread)d %(threadName)s %(process)d %(name)s - %(message)s' //定義日誌格式 
formatter = logging.Formatter(fmt)   # 執行個體化formatter。 
handler.setFormatter(formatter)      # 為handler添加formatter。
logger = logging.getLogger('tst')    # 擷取名為tst的logger。  
logger.addHandler(handler)           # 為logger添加handler。 
logger.setLevel(logging.DEBUG)  
logger.info('first info message')  
logger.debug('first debug message')

具體欄位說明如下所示。

欄位

說明

%(name)s

組建記錄檔的Logger名稱。

%(levelno)s

數字形式的記錄層級。

%(levelname)s

文本形式的記錄層級,包括DEBUG、INFO、WARNING、ERROR和CRITICAL。

%(pathname)s

記錄檔路徑。

%(filename)s

記錄檔名。

%(module)s

日誌所在的模組名。

%(funcName)s

日誌輸出函數的名稱。

%(lineno)d

日誌輸出函數的語句所在的程式碼。

%(created)f

日誌建立時間,UNIX時間戳記格式。

%(relativeCreated)d

日誌建立時間與logging模組被載入時間的時間差,單位為毫秒。

%(asctime)s

日誌建立時間。例如2003-07-08 16:49:45,896,其中896表示毫秒數。

%(msecs)d

日誌建立時間中的毫秒部分。

%(thread)d

線程ID。

%(threadName)s

線程名稱。

%(process)d

進程ID。

%(message)s

日誌資訊。

操作步驟

Log Service提供設定精靈,協助您快速完成Logtail採集配置。本文以通過完整正則模式採集Python日誌為例。

  1. 登入Log Service控制台

  2. 接入資料地區,選擇正則-文本日誌
  3. 選擇目標Project和Logstore,單擊下一步

  4. 確認目標機器組已在應用機器組地區,單擊下一步

    重要

    建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組無心跳進行排查。

  5. 預覽資料及建立索引,然後單擊下一步。索引的更多資訊,請參見建立索引

  6. 單擊查詢日誌,系統將跳轉至Logstore查詢分析頁面。

    您需要等待1分鐘左右,待索引生效後,才能在原始日誌頁簽中,查看已採集到的日誌。更多資訊,請參見查詢和分析日誌