如何正确地将DLT-log文件分割成多个文件

问题描述 投票:0回答:1

我正在尝试开发一个

dlt-analyzer
来“即时”检查新生成的日志。

为此,我运行

dlt-receive
将所有日志输出到 main.dlt 文件中。然后使用 Python 代码,使用
readlines
方法将日志分成 16kB 块,然后将每个块放入 temp.dlt:

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)

然后我运行

dlt-viewer -s -csv -f <FILTER NAME>  -c temp.dlt results.csv
来获取过滤结果。但在大多数情况下它不起作用(results.csv文件显示为空),因为似乎来自main.dlt的日志复制到temp.dlt忽略了dlt标头,因此
dlt-viewer
无法正确解析日志... 有没有办法在保留消息头的情况下分割 DLT 文件?或者我可以以某种方式自动添加错过的标题吗?

python binaryfiles dlt-daemon dlt
1个回答
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 条消息步骤。

© www.soinside.com 2019 - 2024. All rights reserved.