Welcome to GENIVI Diagnostic Log and Trace (DLT). If you are familiar with DLT and want to know what's new, check the Release Notes.
New to DLT? Great! Welcome aboard. We prepared a brief overview for you as well as some information on how to get started immediately. After you made yourself familiar with the basic mechanics of DLT, you can learn more about advanced concepts and features.
GENIVI DLT provides a log and trace interface, based on the standardised protocol specified in the AUTOSAR standard 4.0 DLT. It is used by other GENIVI components but can serve as logging framework for other applications without relation to GENIVI.
The most important terms and parts are depicted in the following figure. Please refer to Glossary for a full overview over DLT-specific terms.
This is only the simplest of all use cases that you will further pursue in the Get Started section. Once you want to learn more, you will find that the repository contains advanced features utilizing several adaptors and console utilities as well as test applications.
The following packages need to be installed in order to be able to build and install DLT daemon:
On Ubuntu those dependencies can be installed with the following command:
sudo apt-get install cmake zlib1g-dev libdbus-glib-1-dev optional: sudo apt-get install libjson-c-dev # in case you want to use dlt-receives extended filtering
Then proceed to download DLT if you haven't already. We recommend cloning the repository, but downloading and extracting a zip-archive is fine as well.
cd /path/to/workspace git clone https://github.com/GENIVI/dlt-daemon.git
To build and install the DLT daemon, follow these steps:
cd /path/to/workspace/dlt-daemon mkdir build cd build cmake .. make optional: sudo make install optional: sudo ldconfig # in case you executed make install
CMake accepts a plethora of build options to configure the build to suit your needs.
In case you haven't had a look at the brief overview, now would be the perfect occasion to learn about the most important terms and to get an idea where data is buffered. Then go on with our guide on how to set up a DLT demo setup.
Now that you have seen DLT in action, you probably want to develop your own applications using DLT. You will find everything you need in our "DLT for Application Developers" guide.
A hint: If you want to read the API documentation, you have to build it locally
at the moment. The API documentation is generated with doxygen. To build it,
run cmake with the
-DWITH_DOC=ON option, e.g.:
mkdir build cd build cmake -DWITH_DOC=ON .. make doc
To build the DLT debian package for your own purpose, follow these steps:
dpkg-buildpackage -us -uc
Once you got your feet wet with developing your first application, you might want to learn more. Find out about DLT's advanced topics, learn how to configure, control and interface DLT or study its internals by checking out the design specifications.
The GENIVI DLT implementation is capable of by far more than to "just" send log message. You will get an overview of advanced features in this section. Follow the links to learn more about the respective concept.
|Build Options||The CMake build system provides a large amount of build options. They let you turn on or off certain features and provide alternative implementation details.|
|LogStorage||The DLT Daemon as well as the DLT libary provide buffers for caching log data during absence of a consumer. However, some use cases require to write large amounts of log message e.g. to mass storages for long term storage or because no other means of exfiltrating the log data is available.|
|MultiNode||A DLT Daemon can run as a gateway to connect multiple passive nodes. Each passive node has its owns DLT Applications and runs its own daemon. The gateway node connects to all of them, collects the logs and routes them to the DLT Client.|
|Extended Network Trace||Normal DLT messages are limited in size. To overcome this limitation the feature network trace message allows the user to send or truncate messages which would not fit into a normal DLT message.|
|DLT Filetransfer||Although not originally designed for this, files can be transmitted over DLT. A corresponding DLT Client (e.g. DLT Viewer) can receive and decode them accordingly.|
|DLT KPI||Valueable status information about the monitored system can be read via DLT as well. The information under
|DLT Core Dump Handler||This tool collects and extracts debug information then utilize DLT Filetransfer to transfer the information to client.|
There is still lots to discover about DLT. If you turn on the generation of
manpages with the cmake option
-DWITH_MAN=ON you can learn how to
configure DLT to exactly suit your needs, how to control the behvaiour of
running instances and how to interface DLT with existing system through
The man pages are generated with pandoc, which also needs asciidoc as dependency.
Build manpages (initally or because something changed) with e.g.
mkdir build cd build cmake -DWITH_MAN=ON .. make generate_man
|dlt-daemon(1)||How to start DLT-Daemon|
|dlt.conf(5)||Configure the DLT framework to reflect your use case|
|Control running instances of DLT|
|dlt-receive(1)||Receive DLT messages from daemon and print or store the log messages.|
|dlt-control(1)||Send control messages to daemon.|
|dlt-logstorage-ctrl(1)||Send a trigger to daemon to connect/disconnect certain logstorage device, or send a demand to sync data the internal buffer into logstorage file.|
|dlt-passive-node-ctrl(1)||Send a trigger to daemon to connect/disconnect passive daemon.|
|dlt-system(1)||DLT-System provides a way to directly access system logs via DLT|
|dlt-adaptor-stdin(1)||Adaptor for forwarding input from stdin to daemon.|
|dlt-adaptor-udp(1)||Adaptor for forwarding received UDP messages to daemon.|
|dlt-convert(1)||Convert DLT files into human readable format.|
|dlt-sortbytimestamp(1)||Read log messages from DLT file, sort by timestamp, and store them again.|
|dlt-qnx-system(1)||Access system logs in QNX with DLT|
Start working, best practice is to commit smaller, compilable pieces during the work that makes it easier to handle later on.
Before contributing code, run uncrustify to harmonize code style.
Configuration: util/uncrustify.cfg uncrustify version: 0.68_f
List of open issues can be found on Github
Developed and tested with Ubuntu Linux 16 64-bit / Intel PC
Full information on the license for this software is available in the "LICENSE" file. Full information on the license for the cityhash code is available in "COPYING" file in src/core_dump_handler/cityhash_c.