Diagnostic Log and Trace——dlt的编译和安装

 2023-09-05 阅读 93 评论 0

摘要:概述 GENIVI DLT 提供日志和跟踪接口,基于 AUTOSAR 标准 4.0 DLT 中指定的标准化协议。它被其他 GENIVI 组件使用,但可以作为其他应用程序的日志框架,与 GENIVI 无关。 最重要的术语和部分如下图所示。有关 DLT 特定术语的完整概述,请参阅词汇表。

概述

GENIVI DLT 提供日志和跟踪接口,基于 AUTOSAR 标准 4.0 DLT 中指定的标准化协议。它被其他 GENIVI 组件使用,但可以作为其他应用程序的日志框架,与 GENIVI 无关。

最重要的术语和部分如下图所示。有关 DLT 特定术语的完整概述,请参阅词汇表。

简单来说就是一个很好用的应用日志服务,这个服务支持图形化绿色软件 DLT-Viewer,需要网络支持,可以存储离线日志,体积十分小巧,灵活的配置管理方式。

源码开源网址:GitHub - COVESA/dlt-daemon: Diagnostic Log and Trace.

备份开源网址:dlt-daemon: Diagnostic Log and Trace欢迎使用 GENIVI 诊断日志和跟踪 (DLT)。如果您熟悉 DLT 并想了解新功能,请查看发行说明。DLT 新手?伟大的!欢迎上车。我们为您准备了简要概述以及有关如何立即开始的一些信息。在您熟悉 DLT 的基本机制后,您可以了解有关高级概念和功能的更多信息。icon-default.png?t=LA23https://gitee.com/RTplay/dlt-daemon

 编译与安装

需要安装以下软件包才能构建和安装 dlt-daemon程序:

cmake

zlib

dbus

json-c (only required for dlt-receives extended filtering)

在 Ubuntu 上,可以使用以下命令安装这些依赖项:

sudo apt-get install cmake zlib1g-dev libdbus-glib-1-dev
sudo apt-get install libjson-c-dev

如果您还没有下载 DLT,请继续下载。我们建议克隆存储库,但下载和提取 zip 存档也很好。

cd /path/to/workspace
git clone https://gitee.com/RTplay/dlt-daemon.git

要构建和安装 DLT 守护程序,请执行以下步骤:

cd /path/to/workspace/dlt-daemon
mkdir build
cd build
cmake ..
make
optional: sudo make install
optional: sudo ldconfig # 如果你执行了 make install

构建api文档

如果你想阅读 API 文档,你现在必须在本地构建它。 API 文档是使用 doxygen 生成的。要构建它,请使用 -DWITH_DOC=ON 选项运行 cmake,会有如下依赖,

sudo apt-get install pandoc doxygen asciidoc

执行以下步骤:

mkdir build
cd build
cmake -DWITH_DOC=ON ..
make doc

配置、控制和接口

关于 DLT,还有很多值得探索的地方。如果您使用 cmake 选项 -DWITH_MAN=ON 打开联机帮助页的生成,您可以了解如何配置 DLT 以完全满足您的需求、如何控制运行实例的行为以及如何通过提供的适配器将 DLT 与现有系统连接起来。

手册页是用 pandoc 生成的,它也需要 asciidoc 作为依赖项。

使用例如构建联机帮助页(最初或因为某些更改)

mkdir build
cd build
cmake -DWITH_MAN=ON ..
make generate_man

DLT 演示运行

doc/dlt_demo_setup.md · Gitee 极速下载/dlt-daemon - Gitee.com

在本文档中,您将运行 dlt-daemon 的一个实例。它静静地等待收集和缓冲由一个或多个 DLT 用户生成的日志消息。您将运行这些 DLT 用户之一,并使其生成发送到守护程序的日志消息。最后,您启动一​​个客户端来收集和显示这些消息。

运行 DLT 守护进程

DLT 守护程序是高度可配置的,但对于这种情况,默认设置是可以的:

dlt-daemon
[101679.622834]~DLT~21069~NOTICE   ~Starting DLT Daemon; DLT Package Version: 2.18.8 STABLE, Package Revision: v2.18.8_5_g1f51eab, build on Nov  2 2021 14:11:04
-SYSTEMD -SYSTEMD_WATCHDOG -TEST -SHM[101679.622935]~DLT~21069~INFO     ~FIFO size: 65536
[101679.622946]~DLT~21069~INFO     ~Activate connection type: 5
[101679.622960]~DLT~21069~INFO     ~dlt_daemon_socket_open: Socket created
[101679.622972]~DLT~21069~INFO     ~dlt_daemon_socket_open: Listening on ip 0.0.0.0 and port: 3490
[101679.622979]~DLT~21069~INFO     ~dlt_daemon_socket_open: Socket send queue size: 16384
[101679.622992]~DLT~21069~INFO     ~Activate connection type: 1
[101679.623020]~DLT~21069~INFO     ~Activate connection type: 9
[101679.623033]~DLT~21069~INFO     ~Cannot open configuration file: /tmp/dlt-runtime.cfg
[101679.623038]~DLT~21069~INFO     ~Ringbuffer configuration: 500000/10000000/500000
[101679.623331]~DLT~21069~NOTICE   ~Failed to open ECU Software version file.
[101679.623348]~DLT~21069~INFO     ~Activate connection type: 6
[101679.623353]~DLT~21069~INFO     ~Switched to buffer state for socket connections.
[101679.623367]~DLT~21069~WARNING  ~dlt_daemon_applications_load: cannot open file /tmp/dlt-runtime-application.cfg: No such file or directory

守护进程打开了一个命名管道,准备从中读取和缓冲日志消息。它还接受客户端在 TCP 端口 3490 上的连接以收集消息。

生成日志消息

一个模拟的 ECU——一个 DLT 用户——现在将使用 DLT 库来创建日志消息并通过命名管道发送它们以供守护程序收集。打开第二个终端并运行

dlt-example-user -n 5 -l 3 "This is my first log message"
Send 0 This is my first log message
Client connected!
Log level changed of context TEST, LogLevel=4, TraceState=0 
Log level changed of context TS1, LogLevel=4, TraceState=0 
Log level changed of context TS2, LogLevel=4, TraceState=0 
Send 1 This is my first log message
Send 2 This is my first log message
Send 3 This is my first log message
Send 4 This is my first log message

这将发送包含字符串负载的 5 (-n 5) 条相同的日志级别WARNING (-l 3) 日志消息。

Read logs

DLT 守护进程现在将消息保存在其缓冲区中,并将它们保存在那里,直到它们被提取。接收和处理日志消息的强大工具是 DLT-Viewer,它也提供图形用户界面。现在,一个简单的命令行客户端就足够了:

dlt-receive -a localhost
2020/04/30 12:27:14.976731   17134987 000 ECU1 DA1- DC1- control response N 1 [service(3842), ok, 02 00 00 00 00]
2020/04/30 12:27:14.976779   17067139 000 ECU1 DA1- DC1- control response N 1 [service(3842), ok, 01 00 00 00 00]
2020/04/30 12:27:14.976787   17067139 004 ECU1 DLTD INTM log info V 1 [Client connection #7 closed. Total Clients : 0]
2020/04/30 12:27:14.976794   17104625 005 ECU1 DLTD INTM log info V 1 [ApplicationID 'LOG' registered for PID 5241, Description=Test Application for Logging]
2020/04/30 12:27:14.976802   17104625 000 ECU1 DA1- DC1- control response N 1 [get_log_info, 07, 01 00 4c 4f 47 00 01 00 54 45 53 54 ff ff 18 00 54 65 73 74 20 43 6f 6e 74 65 78 74 20 66 6f 72 20 4c 6f 67 67 69 6e 67 1c 00 54 65 73 74 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 66 6f 72 20 4c 6f 67 67 69 6e 67 72 65 6d 6f]
2020/04/30 12:27:14.976823   17104625 000 ECU1 DA1- DC1- control response N 1 [get_log_info, 07, 01 00 4c 4f 47 00 01 00 54 53 31 00 ff ff 1b 00 54 65 73 74 20 43 6f 6e 74 65 78 74 31 20 66 6f 72 20 69 6e 6a 65 63 74 69 6f 6e 1c 00 54 65 73 74 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 66 6f 72 20 4c 6f 67 67 69 6e 67 72 65 6d 6f]
2020/04/30 12:27:14.976844   17104625 000 ECU1 DA1- DC1- control response N 1 [get_log_info, 07, 01 00 4c 4f 47 00 01 00 54 53 32 00 ff ff 1b 00 54 65 73 74 20 43 6f 6e 74 65 78 74 32 20 66 6f 72 20 69 6e 6a 65 63 74 69 6f 6e 1c 00 54 65 73 74 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 66 6f 72 20 4c 6f 67 67 69 6e 67 72 65 6d 6f]
2020/04/30 12:27:14.976866   17104588 000 ECU1 LOG- TEST log warn V 2 [0 This is my first log message]
2020/04/30 12:27:14.976872   17109592 001 ECU1 LOG- TEST log warn V 2 [1 This is my first log message]
2020/04/30 12:27:14.976880   17114599 002 ECU1 LOG- TEST log warn V 2 [2 This is my first log message]
2020/04/30 12:27:14.976884   17119607 003 ECU1 LOG- TEST log warn V 2 [3 This is my first log message]
2020/04/30 12:27:14.976889   17124611 004 ECU1 LOG- TEST log warn V 2 [4 This is my first log message]
2020/04/30 12:27:14.976894   17134988 006 ECU1 DLTD INTM log info V 1 [New client connection #8 established, Total Clients : 1]
2020/04/30 12:27:15.442016   17139641 000 ECU1 DA1- DC1- control response N 1 [service(3841), ok, 4c 4f 47 00 54 45 53 54 72 65 6d 6f]
2020/04/30 12:27:15.442044   17139642 007 ECU1 DLTD INTM log info V 1 [Unregistered ApID 'LOG']

户端连接到 localhost 的默认端口 3490 以收集所有消息并将有效负载解释为 ASCII 文本 (-a)。您可以看到许多其他消息。这些是控制客户端和守护进程之间的流的控制消息。稍后您将了解它们。现在,您已经建立了一个基本示例,已经看到了 DLT 的运行情况。

Dlt到现在为止还只能手动运行,如果想要开机自启还需要把它设置为服务,可以自创建一个dlt-daemon.service文件,文件内容如下:

[Unit]
Description= dlt service.[Service]
Type= simple
ExecStart= /usr/local/bin/dlt-daemon
Restart=on-failure
RestartSec=30s
RestartPreventExitStatus=SIGKILL
LimitCORE=infinity[Install]
WantedBy=multi-user.target

将文件放到/usr/lib/systemd/system,使用systemctl enable dlt-daemon.service设置开机启动,然后使用systemctl start dlt-daemon.service启动服务。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/698.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息