提问人:DonnyFlaw 提问时间:10/11/2023 更新时间:11/18/2023 访问量:155
如何正确地将DLT日志文件拆分为多个文件
How to correctly split DLT-log file into multiple files
问:
我正在尝试开发一个可以“即时”检查新生成的日志的方法。dlt-analyzer
为此,我运行将所有日志输出到 main.dlt 文件中。然后使用 Python 代码,我使用方法将日志拆分为 16kB 的块,然后将每个块放入 temp.dlt 中:dlt-receive
readlines
def read_in_chunks(file_object):
while True:
data = file_object.readlines(16384)
yield data
with open('main.dlt', 'rb') as f:
for chunks in read_in_chunks(f):
with open('temp.dlt', 'wb') as temp_dlt:
for chunk in chunks:
temp_dlt.write(chunk)
然后我跑去获得筛选后的结果。但在大多数情况下,它不起作用(结果.csv文件显示为空),因为似乎日志从 main.dlt 复制到 temp.dlt 忽略了 dlt-headers,因此无法正确解析日志......
有没有办法将DLT文件与保留消息头分开?或者我可以以某种方式自动添加遗漏的标题吗?dlt-viewer -s -csv -f <FILTER NAME> -c temp.dlt results.csv
dlt-viewer
答:
1赞
pmod
11/17/2023
#1
dlt-tools 软件包包括名为 dlt-convert 的工具。这对于拆分/合并 dlt 文件很有用。要从较大的日志中提取 dlt 日志的某些部分,语法为:
dlt_convert -b <index_from> -e <index_to> -o part.dlt full.dlt
在您的例子中,您可以跟踪传入日志中的最新消息 ID,然后根据该 ID 进行拆分:
loop:
# remember latest now -> latest_index = ...
dlt_convert -b <track_index> -o latest_part.dlt input.dlt
# do smth with part.dlt ...
# reassign: track_index = last_index
因此,我不认为只是在随机位置拆分输入日志是不好的,但您可以用dlt_convert拆分或根据其实现进行调整 基于索引的拆分,即 1000 条消息步长。
但请注意,dlt-viewer 还可以实时读取和显示日志(按连接,选择 ECU 和协议,例如 TCP + 端口)。
评论
0赞
DonnyFlaw
11/17/2023
你好。谢谢你的回复!你能详细说明一下它的格式吗?每条消息都有“索引”、“时间”......“有效负载”字段。例如,通过当前索引 + 100 在循环中迭代会很棒。但是我应该如何将索引传递到这些和参数中呢?每次我收到此错误时message ID
-b
-e
dlt-convert: symbol lookup error: dlt-convert: undefined symbol: dlt_execute_command
0赞
DonnyFlaw
11/17/2023
从示例中,我看到应该还有一个 prameter - ,但也会导致-o
dlt-convert -b 0 -e 100 -o '/path/to/temp.dlt' '/path/to/main.dlt'
dlt-convert: symbol lookup error: dlt-convert: undefined symbol: dlt_execute_command
0赞
DonnyFlaw
11/17/2023
尝试过:我得到了新文件,但它有root权限...现在谢谢。需要更深入地挖掘它......sudo
sudo dlt-convert -b 0 -e 100 -o '/path/to/temp.dlt' '/path/to/main.dlt'
1赞
pmod
11/18/2023
对不起,我忘记了 -o 选项,然后我使用了错误的术语,它是“索引”而不是消息 ID。关于缺少的符号 - 它是从共享库加载的,所以它基本上是关于您在运行 dlt-convert 的用户下缺少的库路径
0赞
pmod
11/18/2023
在我的 ubuntu Linux 共享库上,是从 /lib/x86_64-linux-gnu/libdlt.so.2 加载的,因此请检查您是否正确安装了 dlt-tools 软件包
评论