{"id":19079286,"url":"https://github.com/covesa/dlt-daemon","last_synced_at":"2025-12-24T10:26:13.750Z","repository":{"id":37103231,"uuid":"68306586","full_name":"COVESA/dlt-daemon","owner":"COVESA","description":"Diagnostic Log and Trace.","archived":false,"fork":false,"pushed_at":"2025-04-22T04:30:44.000Z","size":10452,"stargazers_count":401,"open_issues_count":41,"forks_count":306,"subscribers_count":46,"default_branch":"master","last_synced_at":"2025-05-05T08:05:03.648Z","etag":null,"topics":["covesa","diagnostics","dlt-daemon"],"latest_commit_sha":null,"homepage":"https://covesa.github.io/dlt-daemon/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/COVESA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-09-15T15:30:58.000Z","updated_at":"2025-04-27T23:51:31.000Z","dependencies_parsed_at":"2023-02-17T22:00:56.713Z","dependency_job_id":"6c052cf2-40ab-4e80-8ffb-d200486d125d","html_url":"https://github.com/COVESA/dlt-daemon","commit_stats":null,"previous_names":["genivi/dlt-daemon"],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/COVESA%2Fdlt-daemon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/COVESA%2Fdlt-daemon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/COVESA%2Fdlt-daemon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/COVESA%2Fdlt-daemon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/COVESA","download_url":"https://codeload.github.com/COVESA/dlt-daemon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["covesa","diagnostics","dlt-daemon"],"created_at":"2024-11-09T02:14:12.157Z","updated_at":"2025-12-24T10:26:13.744Z","avatar_url":"https://github.com/COVESA.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Diagnostic Log and Trace\n\n\n[![Build Status](https://github.com/COVESA/dlt-daemon/actions/workflows/cmake-ctest.yml/badge.svg)]( https://github.com/COVESA/dlt-daemon/actions/workflows/cmake-ctest.yml)\n[![CodeQL](https://github.com/COVESA/dlt-daemon/actions/workflows/codeql-analysis.yml/badge.svg?branch=master)](https://github.com/COVESA/dlt-daemon/actions/workflows/codeql-analysis.yml)\n[![Page-build-deployment](https://github.com/COVESA/dlt-daemon/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/COVESA/dlt-daemon/actions/workflows/pages/pages-build-deployment)\n\n**Code coverage reports online** 📄 [LCOV - code coverage report](https://COVESA.github.io/dlt-daemon/dlt_lcov_report/index.html)\n\n# Diagnostic Log and Trace\n\nWelcome to COVESA Diagnostic Log and Trace (DLT). If you are familiar with DLT\nand want to know what's new, check the [Release Notes](ReleaseNotes.md).\n\n**New to DLT? Great! Welcome aboard.** We prepared a brief [overview](#overview)\nfor you as well as some information on how to [get started](#get-started)\nimmediately. After you made yourself familiar with the basic mechanics of DLT,\nyou can [learn more](#learn-more) about advanced concepts and features.\n\n## Overview\n\nCOVESA DLT provides a log and trace interface, based on the standardised\nprotocol specified in the\n[AUTOSAR Classic Platform R19-11 DLT](https://www.autosar.org/fileadmin/standards/R19-11/CP/AUTOSAR_SWS_DiagnosticLogAndTrace.pdf).\nIt is used by other COVESA components but can serve as logging framework for\nother applications without relation to COVESA.\n\nThe most important terms and parts are depicted in the following figure. Please\nrefer to [Glossary](doc/dlt_glossary.md) for a full overview over DLT-specific\nterms.\n\n![alt text](doc/images/dlt_overview.png \"DLT Overview\")\n\n- A **DLT User** essentially is an application that serves its respective (not\nDLT-related) purpose and produces DLT log messages. It utilizes the DLT library\nto craft and transmit these messages.\n- The **DLT Library** provides a convenient API to DLT Users (i.e. applications)\nto create DLT log messages and hand them over to the DLT Daemon. If the latter\nis not avilable, the library will cache the messages in a ring buffer so they\ndon't get lost immediately.\n- The **DLT Daemon** is the DLT communication interface of an ECU. It collects\nand buffers log messages from one or more DLT users running on the ECU and\nprovides them to DLT clients upon their request. The daemon also accepts control\nmessages from the clients to adjust the daemon's or the aplications' behaviour.\n- A **DLT Client** receives and consumes the log messages from DLT Users by\nfetching them from DLT Daemons. It may also issue control messages to control\nthe behaviour of a DLT Daemon or its connected DLT Users. A DLT client can even\ntransmit user-defined data to a DLT User through so-calles injection messages.\n\nThis is only the simplest of all use cases that you will further pursue in the\n[Get Started](#get-started) section. Once you want to [learn more](#learn-more),\nyou will find that the repository contains advanced features utilizing several\nadaptors and console utilities as well as test applications.\n\n## Get Started\nIn this section, you can learn how to [build and install](#build-and-install)\nDLT. Then you can choose to [run a DLT demo](#run-a-dlt-demo) setup or to start\nby [developing your own DLT-featured application](#develop-your-own-dlt-featured-application).\n\n### Build and install\n\nThe following packages need to be installed in order to be able to build and\ninstall DLT daemon:\n\n- cmake\n- zlib\n- dbus\n- json-c (only required for dlt-receives extended filtering)\n\nOn Ubuntu those dependencies can be installed with the following command:\n\n```bash\nsudo apt-get install cmake zlib1g-dev libdbus-glib-1-dev build-essential\noptional: sudo apt-get install libjson-c-dev # in case you want to use dlt-receives extended filtering\n```\n\nThen proceed to download DLT if you haven't already. We recommend cloning the\nrepository, but downloading and extracting a zip-archive is fine as well.\n```bash\ncd /path/to/workspace\ngit clone https://github.com/COVESA/dlt-daemon.git\n```\n\nTo build and install the DLT daemon, follow these steps:\n\n```bash\ncd /path/to/workspace/dlt-daemon\nmkdir build\ncd build\ncmake ..\nmake\noptional: sudo make install\noptional: sudo ldconfig # in case you executed make install\n```\n\nFor DLT on Cygwin please refer to [Build and Install DLT on Cygwin](doc/dlt_on_Cygwin.md)\n\nCMake accepts a plethora of [build options](doc/dlt_build_options.md) to\nconfigure the build to suit your needs.\n\n### Run a DLT demo\nIn case you haven't had a look at the brief [overview](#overview), now would be\nthe perfect occasion to learn about the most important terms and to get an idea\nwhere data is buffered. Then go on with our guide on [how to set up a DLT demo\nsetup](doc/dlt_demo_setup.md).\n\n### Develop your own DLT-featured application\n\nNow that you have seen DLT in action, you probably want to develop your own\napplications using DLT. You will find everything you need in our [\"DLT for\nApplication Developers\" guide](doc/dlt_for_developers.md).\n\nA hint: If you want to read the API documentation, you have to build it locally\nat the moment. The API documentation is generated with _doxygen_. To build it,\nrun cmake with the ```-DWITH_DOC=ON``` option, e.g.:\n\n```bash\nmkdir build\ncd build\ncmake -DWITH_DOC=ON ..\nmake doc\n```\n\n### Build DLT debian package\n\nTo build the DLT debian package for your own purpose, follow these steps:\n\n```bash\ndpkg-buildpackage -us -uc\n```\n\n## Learn more\nOnce you got your feet wet with developing your first application, you might\nwant to learn more. Find out about DLT's [advanced topics](#advanced-topics),\nlearn how to [configure, control and interface](#configure-control-and-interface)\nDLT or study its internals by checking out the [design\nspecifications](./doc/dlt_design_specification.md).\n\n### Advanced Topics\nThe COVESA DLT implementation is capable of by far more than to \"just\" send log\nmessage. You will get an overview of advanced features in this section. Follow\nthe links to learn more about the respective concept.\n\n| Document | Description |\n|----|----|\n| [Build Options](./doc/dlt_build_options.md) | 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. |\n| [LogStorage](doc/dlt_offline_logstorage.md) | 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. |\n| [MultiNode](doc/dlt_multinode.md) | 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. |\n| [Extended Network Trace](doc/dlt_extended_network_trace.md) | 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. |\n| [DLT Filetransfer](doc/dlt_filetransfer.md) | 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. |\n| [DLT KPI](doc/dlt_kpi.md) | Valueable status information about the monitored system can be read via DLT as well. The information under `/proc` of the target system is at your hands easily. |\n| [DLT Core Dump Handler](/doc/dlt_cdh.md) | This tool collects and extracts debug information then utilize [DLT Filetransfer](doc/dlt_filetransfer.md) to transfer the information to client. |\n\n### Configure, Control and Interface\n\nThere is still lots to discover about DLT. If you turn on the generation of\nmanpages with the cmake option ```-DWITH_MAN=ON``` you can learn how to\nconfigure DLT to exactly suit your needs, how to control the behaviour of\nrunning instances and how to interface DLT with existing system through\nprovided adaptors.\n\nThe man pages are generated with *pandoc*, which also needs *asciidoc* as dependency.\n\nBuild manpages (initially or because something changed) with e.g.\n```bash\nmkdir build\ncd build\ncmake -DWITH_MAN=ON ..\nmake generate_man\n```\n\n| Document | Description |\n|----|----|\n| *Configuration* ||\n|[dlt-daemon(1)](doc/dlt-daemon.1.md) | How to start DLT-Daemon |\n|[dlt.conf(5)](doc/dlt.conf.5.md) | Configure the DLT framework to reflect your use case|\n| *Control running instances of DLT*||\n|[dlt-receive(1)](doc/dlt-receive.1.md)| Receive DLT messages from daemon and print or store the log messages. |\n|[dlt-control(1)](doc/dlt-control.1.md)| Send control messages to daemon. |\n|[dlt-logstorage-ctrl(1)](doc/dlt-logstorage-ctrl.1.md)| Send a trigger to daemon to connect/disconnect certain logstorage device, or send a demand to sync data the internal buffer into logstorage file. |\n|[dlt-passive-node-ctrl(1)](doc/dlt-passive-node-ctrl.1.md)| Send a trigger to daemon to connect/disconnect passive daemon. |\n| *Interfacing DLT* ||\n|[dlt-system(1)](doc/dlt-system.1.md) | DLT-System provides a way to directly access system logs via DLT |\n|[dlt-system.conf(5)](doc/dlt-system.conf.5.md) | Configure DLT-System |\n|[dlt-adaptor-stdin(1)](doc/dlt-adaptor-stdin.1.md)| Adaptor for forwarding input from stdin to daemon. |\n|[dlt-adaptor-udp(1)](doc/dlt-adaptor-udp.1.md)| Adaptor for forwarding received UDP messages to daemon. |\n|[dlt-convert(1)](doc/dlt-convert.1.md)| Convert DLT files into human readable format. |\n|[dlt-sortbytimestamp(1)](doc/dlt-sortbytimestamp.1.md)| Read log messages from DLT file, sort by timestamp, and store them again. |\n|[dlt-qnx-system(1)](doc/dlt-qnx-system.md) | Access system logs in QNX with DLT |\n\n## Contribution\n\nStart working, best practice is to commit smaller, compilable pieces during the\nwork that makes it easier to handle later on.\n\nIf you want to commit your changes, create a\n[Pull Request](https://github.com/covesa/dlt-daemon/pulls) in Github. Please\nmake sure to follow the\n[Rules for commit messages](https://at.projects.covesa.org/wiki/display/PROJ/Rules+for+Commit+Messages)\n\n### Coding Rules\n\nThis project is now using clang-format as replacement of uncrustify.\n\nFor convenience, any code changes will be harmonized before commit by hooks/pre-commit.\n\n- Install clang-format\n\n- Install pre-commit script by:\n\n  ```bash\n  cp scripts/pre-commit.sample .git/hooks/pre-commit\n  ```\n\n- Configuration: .clang-format\n\nFor reference to clang-format, you can check with:\n[Configurator](https://zed0.co.uk/clang-format-configurator/)\n\n## Known issues\n\nList of open issues can be found on\n[Github](https://github.com/COVESA/dlt-daemon/issues)\n\n- DLT library: Usage of dlt\\_user\\_log\\_write\\_float64() and DLT\\_FLOAT64()\n  leads to \"Illegal instruction (core dumped)\" on ARM target.\n- DLT library: Nested calls to DLT\\_LOG\\_ ... are not supported, and will lead\n  to a deadlock.\n- For Non linux platforms [eg: QNX] IPC supported is UNIX\\_SOCKET. For Linux\n  Platforms both IPC FIFO and UNIX\\_SOCKET are supported\n\n## Software/Hardware\n\nDeveloped and tested with Ubuntu Linux 16 64-bit / Intel PC\n\n## License\n\nFull information on the license for this software is available in the \"LICENSE\"\nfile.\nFull information on the license for the cityhash code is available in \"COPYING\"\nfile in src/core\\_dump\\_handler/cityhash\\_c.\n\n\n## Contact\nTin Le \u003cTin.Le@vn.bosch.com\u003e; Minh Luu Quang \u003cMinh.LuuQuang@vn.bosch.com\u003e\n\n![alt text](doc/images/covesa-logo.png \"COVESA logo\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcovesa%2Fdlt-daemon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcovesa%2Fdlt-daemon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcovesa%2Fdlt-daemon/lists"}