本文介紹如何通過Logtail采集Python日志。
背景信息
Python的logging模塊提供通用的日志系統,可供第三方模塊或者應用使用。logging模塊定義了不同的日志級別和記錄日志的方式。logging模塊包括logger、handler、filter、formatter四個組件。
采集Python日志,推薦您使用Log Handler,詳細介紹如下所示。
在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 | 日志信息。 |
操作步驟
日志服務提供配置向導,幫助您快速完成Logtail采集配置。本文以通過完整正則模式采集Python日志為例。
登錄日志服務控制臺。
- 在接入數據區域,選擇正則-文本日志。
- 選擇目標Project和Logstore,單擊下一步。
創建機器組。
如果您已有可用的機器組,請將該機器組添加到應用機器組。
如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。
使用場景選擇主機場景。
安裝環境選擇ECS。
選擇機器組單擊創建機器組。
在創建機器組面板中,選中目標ECS實例,單擊安裝并創建為機器組。
具體操作,請參見安裝Logtail(ECS實例)。
頁面中Logtail安裝情況提示成功,則表示安裝成功。
在創建機器組面板,輸入機器組名稱,其他參數均可保持默認配置,然后單擊確定。
更多信息,請參見創建IP地址機器組。
確認目標機器組已在應用機器組區域,單擊下一步。
重要創建機器組后立刻應用,可能因為連接未生效,導致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組無心跳進行排查。
在Logtail配置步驟中,創建Logtail配置。
Logtail參數配置請參見Logtail配置。
預覽數據及創建索引,然后單擊下一步。索引的更多信息,請參見創建索引。
單擊查詢日志,系統將跳轉至Logstore查詢分析頁面。
您需要等待1分鐘左右,待索引生效后,才能在原始日志頁簽中,查看已采集到的日志。更多信息,請參見查詢和分析日志。