dlt2log

Crates.iodlt2log
lib.rsdlt2log
version0.1.1
created_at2026-01-05 15:02:16.256483+00
updated_at2026-01-08 03:38:41.937569+00
descriptionA tool to convert DLT binary files to human-readable log formats
homepage
repository
max_upload_size
id2024008
size41,505
(yangzhewei)

documentation

README

dlt2log

這是一個用 Rust 寫的命令行工具,用於將汽車診斷日誌 (DLT) 檔轉換為人類可讀的文本格式。

功能特點

  • 支援雙版本: 兼容 DLT v1 和 DLT v2 協議。
  • 強大的解析:
    • 自動偵測並正確解析 Storage Header。
    • 支援 DLT v2 的可變長度 ID (ECU/App/Context ID)。
    • 智慧過濾: 自動移除 DLT v2 verbose 訊息中的二進位殘留,確保輸出乾淨。
  • 高效能: 批次處理大量日誌訊息不掉幀。

使用方式

安裝方式 (Installation)

你可以透過以下幾種方式安裝此工具:

1. 快速安裝腳本 (推薦)

這適合所有系統 (Mac/Ubuntu),腳本會自動檢查並安裝所需的 Rust 環境。

./install.sh

2. 從 Crates.io 安裝

如果你已經安裝了 Rust,可以直接從官方套件庫下載安裝:

cargo install dlt2log

安裝後,即可在終端機直接執行 dlt2log指令。


開發者指南 (Developer Guide)

如果你想要修改原始碼或從本地編譯,請參考以下步驟:

快速編譯

./build.sh

常用指令 (Makefile)

  • make build: 編譯 Release 版本。
  • make verify: 自動轉換 dlt_v1_v2/ 下的所有測試檔並驗證。
  • make clean: 清除暫存檔與生成的 log。

輸出格式

輸出符合以下格式: [timestamp][AppID ContextID][LogLevel] payload

  • timestamp: 統一為 16 位數微秒 (Microseconds),對齊 dlt-viewerexample.log
    • DLT v1: 單位為 100us,程式會自動縮放並補齊。
    • DLT v2 (TMSP2): 支援高精度奈秒 (ns) 或 100ns 單位。程式會自動偵測單位並縮放至 16 位數微秒,解決 V2 原始數據位數過長的問題。
    • 時間基準:
      • 若 DLT 檔案包含 Storage Header,則使用絕對時間。
      • 若為純 DLT 流 (如 V1),程式會自動讀取檔案修改時間作為基準,將相對時間補排為絕對時間。

工具會將日誌轉換為以下格式:

[Timestamp][AppID CtxID][LogLevel] Payload

例如:

[16234747684009687][DMgr vdut][INFO] Create RootSwc singleton [root_swc.cpp:82]
Commit count: 0

cargo fmt