1. 概述
1.1 版本
| FineDataLink 版本 | 功能變動 |
|---|---|
| 1.9 | 日誌新增:寫入資料行數、更新資料行數 |
| 3.4 | 顯示的具體日誌中,將「中止」改為「終止」 |
| 4.0.1 | 任務運作日誌優化,提供更準確的日誌資訊,降低使用者排查問題的成本 |
| 4.1.1 | 4.1.1 及之後版本,支援調整業務日誌匯出級別,因此日誌內容也做了優化:
|
| 4.2.9.1 | 日誌中:
|
1.2 功能簡介
定時任務運作後,將會產生運作日誌,便於使用者查看任務運作情況。如下圖所示:

本文介紹在「日誌」這個 Tab 頁下,具體顯示內容。
1.3 注意事項
一個定時任務中有多個流程,在執行後如果有一個流程執行失敗,其他流程執行成功的話,整個定時任務的狀態是失敗的,但是其中的部分流程是執行成功的。

2. 使用者需知
1)4.1.1 及之後版本,支援調整業務日誌匯出級別,因此日誌內容也做了優化:
增加:實體等待運作日誌的列印。
增加:INFO級別,列印更加詳細的日誌,包括參數值、執行腳本、API請求、API分頁取數
優化:明確各條日誌的等級,將日誌級別列印到日誌中。
讀數類節點,統一增加刪除資料的統計。
2)設定日誌級別後(任務控制概述、全局日誌配置),列印的日誌說明如下表所示:
| 設定的日誌級別 | 列印的日誌級別 |
|---|---|
INFO級別 | BASIC INFO ERROR WARN INFO |
| WARN級別 | BASIC INFO ERROR WARN |
| ERROR級別 | BASIC INFO ERROR |
3. 範例
定時任務的日誌均採用下面的格式:
| yyyy-mm-dd hh:mm:ss 任務狀態\節點狀態 [日誌等級] 日誌內容 [日誌等級] 日誌內容 yyyy-mm-dd hh:mm:ss 任務狀態\節點狀態 [日誌等級] 日誌內容 [日誌等級] 日誌內容 運作總覽:執行成功 x,執行失敗 y,終止執行 z,跨越執行 w 執行完畢,總計耗時:nms |
3.1 基礎日誌列印
基礎日誌展示的內容為任務運作/節點執行的狀態,不受任務日誌級別控制,不管哪個日誌級別,都需要進行列印。
各級別的日誌,都是套在基礎日誌的框架裏的,比如 ERROR 級別的日誌,是對應失敗狀態的日誌補充。
3.1.1 標準基礎日誌列印
| 狀態 | 列印日誌 | 說明 |
|---|---|---|
| 實體開始構建 | yyyy-mm-dd hh:min:ss 實體開始構建 | |
| 實體構建結果 | yyyy-mm-dd hh:min:ss 實體構建立功 yyyy-mm-dd hh:min:ss 實體構建失敗 | 日誌互斥,只能出現其中一條 |
| 實體等待運作 | yyyy-mm-dd hh:min:ss 實體正在佇列 | |
| 實體開始運作 | yyyy-mm-dd hh:min:ss 實體開始運作 | |
| 節點開始執行 | yyyy-mm-dd hh:min:ss 開始執行:【節點Name】 yyyy-mm-dd hh:min:ss 跨越執行:【節點Name】 | 日誌互斥,只能出現其中一條 |
| 節點執行結果 | yyyy-mm-dd hh:min:ss 執行成功:【節點Name】 yyyy-mm-dd hh:min:ss 執行失敗:【節點Name】 yyyy-mm-dd hh:min:ss 終止執行:【節點Name】 | 日誌互斥,只能出現其中一條 |
| 實體運作結果 | yyyy-mm-dd hh:min:ss 實體運作成功 yyyy-mm-dd hh:min:ss 實體運作失敗 yyyy-mm-dd hh:min:ss 實體運作中斷 |
3.1.2 循環容器基礎日誌列印
循环容器 的日誌列印是整體邏輯,並非某條日誌匯出,因此無法定義日誌等級。
| 對應的基礎日誌 | 日誌格式 | 日誌範例 |
|---|---|---|
| 開始執行:【節點Name】 | 執行n次循環 (僅展示最近5次循環資訊) 第1次執行: yyyy-mm-dd hh:mm:ss 描述 詳情 第2次執行: yyyy-mm-dd hh:mm:ss 描述 詳情 ...... 第n次執行: yyyy-mm-dd hh:mm:ss 描述 詳情 執行完畢,總計耗時:ns | 2023-08-31 21:26:55 開始執行【循環容器】 執行20次循環 (僅展示最近5次循環資訊) 第16次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[16] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[16] 第17次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[17] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[17] 第18次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[18] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[18] 第19次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[19] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[19] 第20次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[20] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[20] 執行完畢,總計耗時:5.0s |
3.1.3 失敗重試基礎日誌列印
失敗重試 的日誌列印是整體邏輯,並非某條日誌匯出,因此無法定義日誌等級。
| 對應的基礎日誌 | 日誌格式 | 日誌範例 |
|---|---|---|
| 執行失敗:【節點Name】 | 重新執行 (僅展示最近5次重試資訊) 第1次重試: yyyy-mm-dd hh:mm:ss [日誌等級] 描述 詳情 yyyy-mm-dd hh:mm:ss [日誌等級] 描述 ...... 第n次重試: yyyy-mm-dd hh:mm:ss [日誌等級] 描述 詳情 yyyy-mm-dd hh:mm:ss [日誌等級] 描述 詳情 等待第n+1次重試... | 等待首次重試:
等待第2次重試:
|
3.1.4 叢集環境下基礎日誌列印
| 對應的基礎日誌 | 日誌格式 | 說明 | 日誌範例 |
|---|---|---|---|
| 實體開始構建 | yyyy-mm-dd hh:min:ss 實體開始構建 所在節點:節點的專案名稱 | 2024-04-23 15:51:13 實體開始構建 所在節點:fanruan1 | |
| 節點開始執行 | yyyy-mm-dd hh:min:ss 開始執行:【節點Name】所在叢集節點:節點的專案名稱 yyyy-mm-dd hh:min:ss 跨越執行:【節點Name】 | 日誌互斥,只能出現其中一條 | 2024-04-23 15:51:14 開始執行【SQL腳本】所在節點:fanruan1 |
4. BASIC INFO 日誌
| 對應的基礎日誌 | 日誌格式 | 日誌範例 | 說明 |
|---|---|---|---|
| 實體運作中斷 | [BASIC INFO] 任務逾時,中斷運作 | 2023-08-31 19:14:09 實體運作中斷 [BASIC INFO] 任務逾時,中斷運作 | |
| 開始執行:【節點Name】 | [BASIC INFO] - 啟動時刻:yyyy-mm-dd hh:mm:ss - 實時讀取速度: nB/s, n行/s - 實時寫入速度: nB/s, n行/s - 累計寫入行數: n行 - 累計更新行數: n行 - 累計刪除行數: n行 - 寫入髒資料行數: n行 正在執行【節點名稱】... | 2023-08-31 19:45:26 開始執行【資料同步】 [BASIC INFO] - 啟動時刻:2023-08-3119:45:26 - 實時讀取速度:0B/s,0行/s - 實時寫入速度:0B/s,0行/s - 累計寫入行數:0行 - 累計更新行數:0行 - 累計刪除行數:0行 - 寫入髒資料行數:0行 正在執行【資料同步】.. | 僅在節點執行程式中列印,節點執行完畢時清除此日誌 適用節點:
|
| 開始執行:【節點Name】 | [BASIC INFO] - 啟動時刻:yyyy-mm-dd hh:mm:ss - 實時下載速度:nB/s - 實時上傳速度:nB/s - 上傳成功檔案數:n個 正在執行【檔案傳輸】... | 2023-08-31 19:45:26 開始執行【檔案傳輸】 [BASIC INFO] - 啟動時刻:2023-08-3119:45:26 - 實時下載速度:0B/s - 實時上傳速度:0B/s - 上傳成功檔案數:0個 正在執行【檔案傳輸】.. | 適用節點:檔案傳輸 |
| 開始執行:【節點Name】 | [BASIC INFO] - SQL條數:x - 影響行數:y - 總耗時:zs | 2024-04-23 16:36:53 開始執行【SQL腳本】 [BASIC INFO] - SQL條數:4 - 影響行數:4 - 總耗時:0.016s 2024-04-23 17:17:23 執行成功【SQL腳本】 | 1)僅在執行成功後展示(資訊由資料庫傳回給我們)如果未傳回資料則顯示資訊未傳回) 2)總耗時:指建立連結到獲取傳回資料的總時間,主要是資料庫執行SQL的時間 3)適用節點:SQL腳本 |
| 執行成功:【節點Name】 | [BASIC INFO] - 啟動時刻:yyyy-mm-dd hh:mm:ss - 結束時刻:yyyy-mm-dd hh:mm:ss - 平均流量:nB/s - 平均寫入速度:n行/s - 讀取資料行數:n行 - 寫入資料行數:n行 - 更新資料行數:n行 - 刪除資料行數:n行 - 寫入髒資料行數:n行 - 耗時:ns 注:「寫入資料行數」為直接寫入的資料行數,不同資料庫統計時有一定差異;比如有的資料庫寫入時覆重寫入的資料也會歸到「寫入資料行數」中 | 2023-08-31 20:03:33 節點執行成功【參數指派】 [BASIC INFO] - 啟動時刻:2023-08-31 20:03:32 - 結束時刻:2023-08-31 20:03:33 - 平均流量:871B/s - 平均寫入速度:1行/s - 讀取資料行數:20行 - 寫入資料行數:1行 - 更新資料行數:0行 - 刪除資料行數:0行 - 寫入髒資料行數:0行 - 耗時:1.0s | 適用節點:
|
| 執行成功:【節點Name】 | [BASIC INFO] - 啟動時刻:yyyy-mm-dd hh:mm:ss - 結束時刻:yyyy-mm-dd hh:mm:ss - 平均流量:nB/s - 下載檔案個數:n個 - 上傳檔案個數:n個 - 耗時:ns | 2023-08-31 20:03:33 節點執行成功【檔案傳輸】 [BASIC INFO] - 啟動時刻:2023-08-31 20:03:32 - 結束時刻:2023-08-31 20:03:33 - 平均流量:871B/s - 下載檔案個數:20個 - 上傳檔案個數:1個 - 耗時:1.0s | 適用節點: 檔案傳輸 |
| 跨越執行:【節點Name】 | [BASIC INFO] 節點遠端條件不滿足 [BASIC INFO] 條件分支條件不滿足 | 2023-08-31 22:07:48 跨越執行【虛擬節點】 [BASIC INFO] 條件分支條件不滿足 |
5. ERROR 日誌
日誌級別設定為 ERROR、INFO、WARN 時,日誌說明如下:
| 對應的基礎日誌 | 日誌格式 | 日誌範例 | 說明 |
|---|---|---|---|
| 實體構建失敗 | [ERROR] 異常節點:【節點Name】 具體錯誤資訊 .... 異常節點:【節點Name】 具體錯誤資訊 | 2023-08-31 19:09:44 任務構建失敗 [ERROR] 異常節點:【資料轉換】 [DB表匯出]: 目標表為空 欄位映射表為空 | ALL |
| 執行失敗:【節點Name】 | [ERROR] [錯誤物件]:錯誤標題 - 描述 | 2023-08-31 19:19:27 執行失敗【資料同步】 [ERROR] [資料來源]:資料連結異常 - DataBase[FRDemo] get column failed - [SQLITE_ERROR] SQL error or missing database (near "1": syntax error) | 通用錯誤 |
| 執行失敗:【節點Name】 | [ERROR] 髒資料條數檢查不透過,限制是[x]條,但實際上擷取了[y]條. 錯誤定位:寫入目的表[Table_name]時遇到了髒資料,資料無法正常寫入,請檢查並作出修改. 異常情況:具體錯誤資訊 建議排查的目標欄位: {欄位序號:1,欄位名:a1,資料類型:INT} {欄位序號:2,欄位名:a2,資料類型:VARCHAR} 錯誤記錄: {位元組數:1,欄位序號:1,欄位值:value1,資料類型:STRING} {位元組數:1,欄位序號:2,欄位值:value2,資料類型:STRING} | 2023-08-31 19:19:27 執行失敗【資料同步】 [ERROR] 髒資料條數檢查不透過, 限制是[20]條, 但實際上擷取了[700]條 錯誤定位: 寫入[SALE_BSEG]目的表時遇到了髒資料,資料無法正第寫入,請做出檢查井修改 異常情況: ORA-01653:表 BLLODS_TEST.SALE_BSEG 無法透過 8192(在表空間 BI_ODS_TEST 中)擴展 建議排查的目標欄位: {欄位序號:295, 欄位名: PENDAYS, 資料類型: NUMBER} {欄位序號:333, 欄位名: CURRENT_TIMESTAMP, 資料類型:TIMESTAMP} 錯誤記錄: {位元組數:3, 欄位序號:1, 欄位值:"800",資料類型:STRING} {位元組數:4, 欄位序號:2, 欄位值:"1001”,資料類型:STRING | 僅在出現髒資料時列印 僅列印最近一條髒資料,髒資料明細可以在統計裏匯出或去fanruan.log中查看 |
| 開始執行:【節點Name】 | [ERROR] [錯誤物件]:錯誤標題 - 描述 報錯循環及參數: 第x次執行-參數[para]:xxx 第y次執行-參數[para]:yyy | 2023-08-31 21:26:55 開始執行【循環容器】 執行20次循環 (僅展示最近5次循環資訊) 第16次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[16] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[16] 第17次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[17] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[17] 第18次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[18] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[18] 第19次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[19] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[19] 第20次執行: 2023-08-31 21:26:56 [BASIC INFO] 開始執行【SQL腳本1】[20] 2023-08-31 21:26:56 [BASIC INFO] 執行成功【SQL腳本1】[20] [ERROR] [DB表匯出2]: DB配置異常-The field mapping [ctr_id] on the writer side was not found in the source field 報錯循環及參數: 第5次執行-參數[para]:5 第6次執行-參數[para]:6 執行完畢,總計耗時:5.0s 2023-08-31 21:26:56 執行失敗【循環容器】 | 針對循環容器中的報錯進行匯總展示,在執行失敗之前進行列印 涉及節點:循環容器 |
6. WARN 日誌
日誌級別設定為 WARN、INFO 時,日誌說明如下:
| 對應的基礎日誌 | 日誌格式 | 日誌範例 | 說明 |
|---|---|---|---|
| 執行成功:【節點Name】 | [WARN] 檢查發現[y]條髒資料 | 2023-08-31 20:03:33 節點執行成功【參數指派】 [BASIC INFO] - 啟動時刻:2023-08-31 20:03:32 - 結束時刻:2023-08-31 20:03:33 - 平均流量:871B/s - 平均寫入速度:18行/s - 讀取資料行數:20行 - 寫入資料行數:18行 - 更新資料行數:0行 - 刪除資料行數:0行 - 寫入髒資料行數:2行 - 耗時:1.0s [WARN] 檢查發現[2]條髒資料 建議排查的目標欄位: {欄位序號:1,欄位名:a1,資料類型:INT} {欄位序號:2,欄位名:a2,資料類型:VARCHAR} 錯誤記錄: {位元組數:1,欄位序號:1,欄位值:value1,資料類型:STRING} {位元組數:1,欄位序號:2,欄位值:value2,資料類型:STRING} | 適用節點:
僅列印最近一條髒資料,髒資料明細可以在統計裏匯出或去fanruan.log中查看 |
| 開始執行:【節點Name】 | - | [WARN] [資料去向]: 檢查到源表[XXX]結構變化 - 新增欄位:COL1 - 刪除欄位:COL2 - 修改欄位:COL3,舊類型:varchar(100),新類型:varchar(200) | 適用節點:資料同步 |
| 開始執行:【節點Name】 | [WARN] [算子名稱]: 語句執行時間過長,請查看 正在執行語句:TRUNCATE XXX | 僅在執行時間超過30s時列印 適用節點:
|
7. INFO 日誌
任務日誌等級為 INFO 時,列印 INFO 級別的日誌。
| 對應的基礎日誌 | 日誌格式 | 說明 |
|---|---|---|
| 開始執行:【節點Name】 | [INFO] [算子Name]: --若不包含算子,則不列印算子Name 使用參數: - 參數[參數名1]:值1 - 參數[參數名2]:值2 |
|
| 開始執行:【節點Name】 | [INFO] [算子Name]: --若不包含算子,則不列印算子Name 執行腳本: 「實際執行的命令語句」 匯出資訊:--若無內容,則不列印,shell腳本、Bat腳本、Python腳本可能會有匯出 「腳本執行後匯出的資訊」 |
注:以上涉及到的節點和算子中,「選表資料過濾語句」為 4.2.9.1 及之後版本新增內容 |
| 開始執行:【節點Name】 | [INFO] [算子Name]: --若不包含算子,則不列印算子Name 回應時長:xx 秒 請求資訊: - 憑證地址:/xx/xx/test.CRT --若未配置自簽章憑證,則不列印 - Request: POST http://www.fanruan.com/testapi/ - Headers: Content-Type: application/json - Body: {"key":"Im a JSON"} 服務端回應: - HttpStatusCode:200 - Headers: Content-Type: application/json |
|
| 開始執行:【節點Name】 | [INFO] 呼叫結果: 作業項編號 : 24 錯誤 : 0 讀取行 : 0 寫入行 : 0 輸入 : 0 匯出行 : 0 更新行 : 0 Lines rejected : 0 Script exist status : 0 結果 : true | 涉及節點:kettle呼叫 |
| 開始執行:【節點Name】 | [INFO] [算子Name]:--若不包含算子,則不列印算子Name 回應時長:xx 秒 請求資訊: | 列印 SAP 請求的詳細內容至日誌
|
8. 排查資訊日誌
針對排查問題的場景,為了提升排查效率,新增「Job」資訊,排查資訊以節點為單位,內容範圍是固定節點定位後端日誌的資訊。
| 對應的基礎日誌 | 日誌格式 | 日誌範例 | 備註 |
|---|---|---|---|
| 開始執行:【節點Name】 | Job[xxx] | Job[12] | 定義:這裏的Job[xx]不是任務配置的JobId,而是調度賦予這個節點的一個編號,在工程不重啟的情況下,一個節點每次運作都使用同一個編號。目前 日誌 中不會記錄 Job 資訊,僅在 畫布節點中的 Tooltip 進行展示。 適用節點:
|
