aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2023-05-21 07:58:26 +0900
committerNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2023-05-30 00:00:23 +0900
commit261769808117585a84046e8d3ab566f40d31d5da (patch)
tree2746dfd4191f2727ee923a45429208a9d81a8b80
parent290a53967ac12d59883b111e6c08183f172aa108 (diff)
Enable logging solution in AGL IC container integration
In case of container isolation, a logs of each container record inside a container. When developer want to analyze system using logs, they need to combine log file between host and guest. This patch enable system wide logging solution for AGL IC container integration. This architecture describe in https://confluence.automotivelinux.org/display/IC/Architecture+design+for+logging Bug-AGL: SPEC-4005 Change-Id: I331474530131e6a87b41639444d705c8293d4c0c Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/raspberrypi4/agl-flutter-ivi-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/rcar-gen3/agl-flutter-ivi-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/raspberrypi4/agl-html5-ivi-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/rcar-gen3/agl-html5-ivi-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/raspberrypi4/agl-momi-ivi-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/rcar-gen3/agl-momi-ivi-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/raspberrypi4/agl-qt-ivi-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/rcar-gen3/agl-qt-ivi-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/raspberrypi4/cluster-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/rcar-gen3/cluster-demo.json7
-rw-r--r--meta-agl-ic-container/recipes-container/container-manager/container-manager/container-manager.service2
-rw-r--r--meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/0001-Disable-noisy-log-from-dlt-daemon.patch130
-rw-r--r--meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt-system.conf200
-rw-r--r--meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt.conf213
-rw-r--r--meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt_logstorage.conf9
-rw-r--r--meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon_%.bbappend72
-rw-r--r--meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb1
-rw-r--r--meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb1
-rw-r--r--meta-agl-ic-container/recipes-platform/packagegroups/packagegroup-agl-container-feature-logging.bb31
19 files changed, 728 insertions, 1 deletions
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/raspberrypi4/agl-flutter-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/raspberrypi4/agl-flutter-ivi-demo.json
index 4393703b..54c03a8b 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/raspberrypi4/agl-flutter-ivi-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/raspberrypi4/agl-flutter-ivi-demo.json
@@ -65,6 +65,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/agl-flutter-ivi-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/rcar-gen3/agl-flutter-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/rcar-gen3/agl-flutter-ivi-demo.json
index 204c51b6..b0acb036 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/rcar-gen3/agl-flutter-ivi-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/rcar-gen3/agl-flutter-ivi-demo.json
@@ -65,6 +65,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/agl-flutter-ivi-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/raspberrypi4/agl-html5-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/raspberrypi4/agl-html5-ivi-demo.json
index a569bcf5..508ba225 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/raspberrypi4/agl-html5-ivi-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/raspberrypi4/agl-html5-ivi-demo.json
@@ -66,6 +66,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/agl-html5-ivi-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/rcar-gen3/agl-html5-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/rcar-gen3/agl-html5-ivi-demo.json
index a935ac86..fd92b73e 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/rcar-gen3/agl-html5-ivi-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/rcar-gen3/agl-html5-ivi-demo.json
@@ -66,6 +66,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/agl-html5-ivi-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/raspberrypi4/agl-momi-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/raspberrypi4/agl-momi-ivi-demo.json
index 24e02758..52877a3b 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/raspberrypi4/agl-momi-ivi-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/raspberrypi4/agl-momi-ivi-demo.json
@@ -66,6 +66,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/agl-momi-ivi-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/rcar-gen3/agl-momi-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/rcar-gen3/agl-momi-ivi-demo.json
index 14f2fe2b..98b7a918 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/rcar-gen3/agl-momi-ivi-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/rcar-gen3/agl-momi-ivi-demo.json
@@ -66,6 +66,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/agl-momi-ivi-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/raspberrypi4/agl-qt-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/raspberrypi4/agl-qt-ivi-demo.json
index 62ccbc14..c2531044 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/raspberrypi4/agl-qt-ivi-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/raspberrypi4/agl-qt-ivi-demo.json
@@ -66,6 +66,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/agl-qt-ivi-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/rcar-gen3/agl-qt-ivi-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/rcar-gen3/agl-qt-ivi-demo.json
index e74e89ff..ca1154b4 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/rcar-gen3/agl-qt-ivi-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/rcar-gen3/agl-qt-ivi-demo.json
@@ -66,6 +66,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/agl-qt-ivi-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/raspberrypi4/cluster-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/raspberrypi4/cluster-demo.json
index 80f10cd6..d4eb8569 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/raspberrypi4/cluster-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/raspberrypi4/cluster-demo.json
@@ -58,6 +58,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/cluster-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/rcar-gen3/cluster-demo.json b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/rcar-gen3/cluster-demo.json
index 5749b865..c0bff97b 100644
--- a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/rcar-gen3/cluster-demo.json
+++ b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/rcar-gen3/cluster-demo.json
@@ -58,6 +58,13 @@
},
{
"type": "directory",
+ "from": "/run/dlt",
+ "to": "run/dlt",
+ "fstype": "none",
+ "option": "bind,optional,create=dir"
+ },
+ {
+ "type": "directory",
"from": "/opt/container/guests/cluster-demo/system.conf",
"to": "etc/systemd/system.conf.d/10-environment.conf",
"fstype": "none",
diff --git a/meta-agl-ic-container/recipes-container/container-manager/container-manager/container-manager.service b/meta-agl-ic-container/recipes-container/container-manager/container-manager/container-manager.service
index 50edafcc..de532fd5 100644
--- a/meta-agl-ic-container/recipes-container/container-manager/container-manager/container-manager.service
+++ b/meta-agl-ic-container/recipes-container/container-manager/container-manager/container-manager.service
@@ -1,6 +1,6 @@
[Unit]
Description=AGL Container Manager
-After=drm-lease-manager.service lxc-net.service multi-user.target
+After=drm-lease-manager.service lxc-net.service dlt.service multi-user.target
Wants=drm-lease-manager.service lxc-net.service multi-user.target
[Service]
diff --git a/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/0001-Disable-noisy-log-from-dlt-daemon.patch b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/0001-Disable-noisy-log-from-dlt-daemon.patch
new file mode 100644
index 00000000..5fb3a9b2
--- /dev/null
+++ b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/0001-Disable-noisy-log-from-dlt-daemon.patch
@@ -0,0 +1,130 @@
+From 2e6c7359a1b2b0946f8f6583a1bcdbb78d1feef9 Mon Sep 17 00:00:00 2001
+From: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+Date: Thu, 18 May 2023 01:02:46 +0900
+Subject: [PATCH] Disable noisy log from dlt-daemon
+
+The dlt-daemon out some own log. But it's a verbose log.
+On the other hand, these verbose log difficult to mask by dlt-viewer.
+This patch disable these verbose log.
+
+Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+---
+ src/daemon/dlt-daemon.c | 7 -------
+ src/daemon/dlt_daemon_common.c | 20 --------------------
+ src/daemon/dlt_daemon_event_handler.c | 4 ----
+ 3 files changed, 31 deletions(-)
+
+diff --git a/src/daemon/dlt-daemon.c b/src/daemon/dlt-daemon.c
+index 74f4049..d659011 100644
+--- a/src/daemon/dlt-daemon.c
++++ b/src/daemon/dlt-daemon.c
+@@ -2333,9 +2333,6 @@ int dlt_daemon_process_control_connect(
+ return -1;
+ }
+
+- if (verbose)
+- dlt_vlog(LOG_INFO, "New connection to control client established\n");
+-
+ return 0;
+ }
+
+@@ -2379,9 +2376,6 @@ int dlt_daemon_process_app_connect(
+ return -1;
+ }
+
+- if (verbose)
+- dlt_vlog(LOG_INFO, "New connection to application established\n");
+-
+ return 0;
+ }
+ #endif
+@@ -3489,7 +3483,6 @@ int create_timer_fd(DltDaemonLocal *daemon_local,
+
+ if ((period_sec <= 0) || (starts_in <= 0)) {
+ /* timer not activated via the service file */
+- dlt_vlog(LOG_INFO, "<%s> not set: period=0\n", timer_name);
+ local_fd = DLT_FD_INIT;
+ }
+ else {
+diff --git a/src/daemon/dlt_daemon_common.c b/src/daemon/dlt_daemon_common.c
+index 6ba5935..7940b96 100644
+--- a/src/daemon/dlt_daemon_common.c
++++ b/src/daemon/dlt_daemon_common.c
+@@ -896,13 +896,6 @@ DltDaemonContext *dlt_daemon_context_add(DltDaemon *daemon,
+
+ if (trace_status > daemon->default_trace_status)
+ trace_status = daemon->default_trace_status;
+-
+- dlt_vlog(LOG_NOTICE,
+- "Adapting ll_ts for context: %.4s:%.4s with %i %i\n",
+- apid,
+- ctid,
+- log_level,
+- trace_status);
+ }
+
+ /* Store log level and trace status,
+@@ -1370,14 +1363,6 @@ int dlt_daemon_user_send_log_level(DltDaemon *daemon, DltDaemonContext *context,
+
+ usercontext.log_level_pos = context->log_level_pos;
+
+- dlt_vlog(LOG_NOTICE, "Send log-level to context: %.4s:%.4s [%i -> %i] [%i -> %i]\n",
+- context->apid,
+- context->ctid,
+- context->log_level,
+- usercontext.log_level,
+- context->trace_status,
+- usercontext.trace_status);
+-
+ /* log to FIFO */
+ errno = 0;
+ ret = dlt_user_log_out2(context->user_handle,
+@@ -1617,23 +1602,18 @@ void dlt_daemon_change_state(DltDaemon *daemon, DltDaemonState newState)
+ {
+ switch (newState) {
+ case DLT_DAEMON_STATE_INIT:
+- dlt_log(LOG_INFO, "Switched to init state.\n");
+ daemon->state = DLT_DAEMON_STATE_INIT;
+ break;
+ case DLT_DAEMON_STATE_BUFFER:
+- dlt_log(LOG_INFO, "Switched to buffer state for socket connections.\n");
+ daemon->state = DLT_DAEMON_STATE_BUFFER;
+ break;
+ case DLT_DAEMON_STATE_BUFFER_FULL:
+- dlt_log(LOG_INFO, "Switched to buffer full state.\n");
+ daemon->state = DLT_DAEMON_STATE_BUFFER_FULL;
+ break;
+ case DLT_DAEMON_STATE_SEND_BUFFER:
+- dlt_log(LOG_INFO, "Switched to send buffer state for socket connections.\n");
+ daemon->state = DLT_DAEMON_STATE_SEND_BUFFER;
+ break;
+ case DLT_DAEMON_STATE_SEND_DIRECT:
+- dlt_log(LOG_INFO, "Switched to send direct state.\n");
+ daemon->state = DLT_DAEMON_STATE_SEND_DIRECT;
+ break;
+ }
+diff --git a/src/daemon/dlt_daemon_event_handler.c b/src/daemon/dlt_daemon_event_handler.c
+index db5767a..192f631 100644
+--- a/src/daemon/dlt_daemon_event_handler.c
++++ b/src/daemon/dlt_daemon_event_handler.c
+@@ -402,8 +402,6 @@ int dlt_connection_check_activate(DltEventHandler *evhdl,
+ case ACTIVE:
+
+ if (activation_type == DEACTIVATE) {
+- dlt_vlog(LOG_INFO, "Deactivate connection type: %u\n", con->type);
+-
+ dlt_event_handler_disable_fd(evhdl, con->receiver->fd);
+
+ if (con->type == DLT_CONNECTION_CLIENT_CONNECT)
+@@ -416,8 +414,6 @@ int dlt_connection_check_activate(DltEventHandler *evhdl,
+ case INACTIVE:
+
+ if (activation_type == ACTIVATE) {
+- dlt_vlog(LOG_INFO, "Activate connection type: %u\n", con->type);
+-
+ dlt_event_handler_enable_fd(evhdl,
+ con->receiver->fd,
+ con->ev_mask);
+--
+2.25.1
+
diff --git a/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt-system.conf b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt-system.conf
new file mode 100644
index 00000000..177ee8f3
--- /dev/null
+++ b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt-system.conf
@@ -0,0 +1,200 @@
+# Configuration file of DLT system manager
+#
+
+########################################################################
+# General configuration
+########################################################################
+
+# The application Id used for the System manager (Default: SYS)
+ApplicationId = SYS
+
+########################################################################
+# Shell configuration
+########################################################################
+
+# Be careful when you enable this feature. The user can send any kind of
+# shell commands. The commands are executed with the rights of the
+# dlt-system process. Dlt-system is started by default as user genivi.
+
+# Enable the Shell for command line injections (Default: 0)
+ShellEnable = 0
+
+########################################################################
+# Syslog Adapter configuration
+########################################################################
+
+# Enable the Syslog Adapter (Default: 0)
+# Enable only when systemd is already running in your system otherwise
+# logs will not come to Client (e.g. dlt_viewer).
+SyslogEnable = 0
+
+# The Context Id of the syslog adapter (Default: SYSL)
+SyslogContextId = SYSL
+
+# The UDP port opened by DLT system mamager to receive system logs (Default: 47111)
+SyslogPort = 47111
+
+########################################################################
+# Systemd Journal Adapter configuration
+########################################################################
+
+# This feature is only available, when dlt is compiled with
+# the option "WITH_SYSTEMD_JOURNAL"
+
+# Dlt-system is started by default as user genivi, see dlt-system.service file.
+# The user genivi must be added to one of the groups 'adm', 'wheel' or
+# 'systemd-journal' to have access to all journal entries.
+# Enable Systemd Journal Adapter only when your system doesn't have systemd.
+# Don't enable both (SyslogEnable = 1 and JournalEnable = 1) together because
+# it causes bind error (can see on connected client).
+
+# Enable the Systemd Journal Adapter (Default: 0)
+JournalEnable = 1
+
+# The Context Id of the journal adapter (Default: JOUR)
+JournalContextId = JOUR
+
+# Show only log entries of current boot and follow (Default: 1)
+# if not JournalCurrentBoot and not JournalFollow is set all
+# persistent journal entries will be logged
+JournalCurrentBoot = 1
+
+# Show only the last 10 entries and follow (Default: 0)
+JournalFollow = 0
+
+# Map the log levels (Default: 1)
+# Mapping journal log levels to DLT log levels
+# 0 Emergency DLT_LOG_FATAL
+# 1 Alert DLT_LOG_FATAL
+# 2 Critical DLT_LOG_FATAL
+# 3 Error DLT_LOG_ERROR
+# 4 Warning DLT_LOG_WARN
+# 5 Notice DLT_LOG_INFO
+# 6 Informational DLT_LOG_INFO
+# 7 Debug DLT_LOG_DEBUG
+JournalMapLogLevels = 1
+
+# Use the original timestamp (uptime when the event actually occured) as DLT timestamp (Default: 1)
+JournalUseOriginalTimestamp = 1
+
+########################################################################
+# Filetransfer Manager
+########################################################################
+
+# Enable the Filetransfer (Default: 0)
+FiletransferEnable = 0
+
+# The Context Id of the filetransfer (Default: FILE)
+FiletransferContextId = FILE
+
+# Time in seconds after startup of dlt-system when first file is transfered (Default: 0)
+FiletransferTimeStartup = 0
+
+# Time in ms seconds to wait between two file transfer logs of a single file to DLT. (Default: 10)
+FiletransferTimeoutBetweenLogs = 5
+
+# You can define multiple file transfer directories
+# Define the directory to watch, whether to compress
+# the file with zlib and the zlib compression level
+# For parsing purposes, FiletransferCompressionLevel
+# must be the last one of three values.
+# For compressing and sending following subdirectories are used: .tocompress and .tosend
+FiletransferDirectory = /var/dlt/ft1
+FiletransferCompression = 1
+FiletransferCompressionLevel = 5
+
+# Second directory to watch
+FiletransferDirectory = /var/dlt/ft2
+FiletransferCompression = 0
+FiletransferCompressionLevel = 5
+
+# And so on...
+FiletransferDirectory = /var/dlt/ft3
+FiletransferCompression = 0
+FiletransferCompressionLevel = 5
+
+
+########################################################################
+# Log short files, especially from proc filesystem
+########################################################################
+
+# Enable the logging of files (Default: 0)
+LogFileEnable = 0
+
+# Log different files
+# Mode: 0 = off, 1 = startup only, 2 = regular
+# TimeDelay: If mode regular is set, time delay is the number of seconds for next sent
+
+# Log the file /etc/sysrel
+LogFileFilename = /etc/sysrel
+LogFileMode = 1
+LogFileTimeDelay = 3
+LogFileContextId = VER
+
+# Log the file /proc/version
+LogFileFilename = /proc/version
+LogFileMode = 1
+LogFileTimeDelay = 3
+LogFileContextId = VERK
+
+# Log the file /proc/meminfo
+# LogFileFilename = /proc/meminfo
+# LogFileMode = 2
+# LogFileTimeDelay = 5
+# LogFileContextId = MEM
+
+# Log the file /proc/cpuinfo
+# LogFileFilename = /proc/cpuinfo
+# LogFileMode = 2
+# LogFileTimeDelay = 5
+# LogFileContextId = CPU
+
+# Log the file /proc/stat
+LogFileFilename = /proc/stat
+LogFileMode = 2
+LogFileTimeDelay = 1
+LogFileContextId = STAT
+
+# Log the file /proc/modules
+# LogFileFilename = /proc/modules
+# LogFileMode = 2
+# LogFileTimeDelay = 5
+# LogFileContextId = MOD
+
+# Log the file /proc/ioports
+# LogFileFilename = /proc/ioports
+# LogFileMode = 1
+# LogFileTimeDelay = 5
+# LogFileContextId = IOP
+
+# Log the file /proc/iomem
+# LogFileFilename = /proc/iomem
+# LogFileMode = 1
+# LogFileTimeDelay = 5
+# LogFileContextId = IOM
+
+########################################################################
+# Log Processes
+########################################################################
+
+# Enable the logging of processes (Default: 0)
+LogProcessesEnable = 0
+
+# The Context Id of the kernel version (Default: PROC)
+LogProcessesContextId = PROC
+
+# Log different processes
+# Name: * = all process, X=alternative name (must correspind to /proc/X/cmdline
+# Filename: the filename in the subdirectory /proc/processid/
+# Mode: 0 = off, 1 = startup only, 2 = regular
+# TimeDelay: If mode regular is set, time delay is the number of seconds for next sent
+
+LogProcessName = *
+LogProcessFilename = stat
+LogProcessMode = 2
+LogProcessTimeDelay = 5
+
+# LogProcessName = dlt_viewer
+# LogProcessFilename = stat
+# LogProcessMode = 2
+# LogProcessTimeDelay = 1
diff --git a/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt.conf b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt.conf
new file mode 100644
index 00000000..444eb123
--- /dev/null
+++ b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt.conf
@@ -0,0 +1,213 @@
+# Configuration file of DLT daemon
+#
+# Configurations made here will overwrite settings by command line
+
+########################################################################
+# General configuration #
+########################################################################
+
+# Start daemon in debug mode, so that all internal debug information is printed out on the console
+# Verbose = 1
+
+# Daemonize DLT daemon, if it is started as daemon
+# Daemonize = 1
+
+# Send DLT messages with serial header
+# SendSerialHeader = 1
+
+# Send automatic get log info response during context registration
+SendContextRegistration = 1
+
+# Option of get log info response during context registration (Default: 7)
+# Apid and Ctid Only = 3, with LogLevel = 4, with TraceStatus = 5, with LL and TS = 6, with LL, TS, and Description = 7
+# SendContextRegistrationOption = 7
+
+# Send automatic time packets every second if client is connected (Default: 0)
+# SendMessageTime = 0
+
+# Set ECU ID (Default: ECU1)
+ECUId = ECU1
+
+# Size of shared memory (Default: 100000)
+SharedMemorySize = 100000
+
+# Directory where to store the persistant configuration (Default: /tmp)
+# PersistanceStoragePath = /tmp
+
+# The logging console for internal logging of dlt-daemon (Default: 0)
+# 0 = log to stdout
+# 1 = log to syslog
+# 2 = log to file (see LoggingFilename)
+# 3 = log to stderr
+LoggingMode = 0
+
+# The internal log level, up to which logs are written (Default: 6)
+# LOG_EMERG = 0, LOG_ALERT = 1, LOG_CRIT = 2, LOG_ERR = 3, LOG_WARNING = 4, LOG_NOTICE = 5, LOG_INFO = 6, LOG_DEBUG = 7
+LoggingLevel = 6
+
+# The logging filename if internal logging mode is log to file (Default: /tmp/dlt.log)
+LoggingFilename = /tmp/dlt.log
+
+# Timeout on send to client (sec)
+TimeOutOnSend = 4
+
+# The minimum size of the Ringbuffer, used for storing temporary DLT messages, until client is connected (Default: 500000)
+RingbufferMinSize = 500000
+
+# The max size of the Ringbuffer, used for storing temporary DLT messages, until client is connected (Default: 10000000)
+RingbufferMaxSize = 10000000
+
+# The step size the Ringbuffer is increased, used for storing temporary DLT messages, until client is connected (Default: 500000)
+RingbufferStepSize = 500000
+
+# The size of Daemon FIFO (/tmp/dlt) (Default: 65536, MinSize: depend on pagesize of system, MaxSize: please check /proc/sys/fs/pipe-max-size)
+# This is only supported for Linux.
+# DaemonFIFOSize = 65536
+
+# Initial log-level that is sent when an application registers (Default: 4)
+# DLT_LOG_OFF = 0, DLT_LOG_FATAL = 1, DLT_LOG_ERROR = 2, DLT_LOG_WARN = 3, DLT_LOG_INFO = 4, DLT_LOG_DEBUG = 5, DLT_LOG_VERBOSE = 6
+# ContextLogLevel = 4
+
+# Initial trace-status that is sent when an application registers (Default: 0)
+# DLT_TRACE_STATUS_OFF = 0, DLT_TRACE_STATUS_ON = 1
+# ContextTraceStatus = 0
+
+# Force log level and trace status of context to not exceed "ContextLogLevel" and "ContextTraceStatus" (Default: 0 = OFF)
+# If set to 1 (ON) whenever a context registers or changes the log-level it has to be lower or equal to ContextLogLevel
+# ForceContextLogLevelAndTraceStatus = 1
+
+# Allows injection mode usage (Default: 1)
+# InjectionMode = 1
+
+########################################################################
+# Gateway Configuration #
+########################################################################
+# Enable Gateway mode (Default: 0)
+# GatewayMode = 1
+
+# Read gateway configuration from another location
+# GatewayConfigFile = /etc/dlt_gateway.conf
+
+########################################################################
+# Permission configuration #
+# ==================================================================== #
+# Owner group of daemon FIFO directory(Default: /tmp/dlt)
+# (If not set, primary group of dlt-daemon process is used)
+# DaemonFifoGroup = dlt_user_apps_group
+
+########################################################################
+# Control Application #
+########################################################################
+ControlSocketPath = /tmp/dlt-ctrl.sock
+
+########################################################################
+# Offline Trace memory #
+########################################################################
+
+# Store DLT messages to local directory, if not set offline Trace is off (Default: off)
+# OfflineTraceDirectory = /tmp
+
+# Maximum size in bytes of one trace file (Default: 1000000)
+# OfflineTraceFileSize = 1000000
+
+# Maximum size of all trace files (Default: 4000000)
+# OfflineTraceMaxSize = 4000000
+
+# Filename timestamp based or index based (Default:1) (timestamp based=1, index based =0)
+# OfflineTraceFileNameTimestampBased = 1
+
+########################################################################
+# Local console output configuration #
+########################################################################
+
+# Print DLT messages; payload as ASCII
+# PrintASCII = 1
+
+# Print DLT messages; payload as hex
+# PrintHex = 1
+
+# Print DLT messages; only headers
+# PrintHeadersOnly = 1
+
+
+########################################################################
+# Client Serial port configuration #
+########################################################################
+
+# Additional support for serial device
+# If a device name is set serial port is enabled.
+# RS232DeviceName = /dev/ttyS0
+
+# Serial device baudrate (Default: 115200)
+# RS232Baudrate = 115200
+
+# Sync to serial header on serial connection
+# RS232SyncSerialHeader = 1
+
+########################################################################
+# TCP Serial port configuration #
+########################################################################
+
+# Sync to serial header on all TCP connections
+# TCPSyncSerialHeader = 1
+
+########################################################################
+# ECU Software version info #
+########################################################################
+
+# Send periodic get ecu version info (Default: 0)
+# SendECUSoftwareVersion = 0
+
+# Absolute path to file storing version info - otherwise DLT version is used
+# PathToECUSoftwareVersion = <absolute-path-to-file>
+
+########################################################################
+# Timezone info #
+########################################################################
+
+# Send periodic timezone info (Default: 0)
+# SendTimezone = 0
+
+##############################################################################
+# Offline logstorage #
+##############################################################################
+# Store DLT log messages, if not set offline logstorage is off (Default: off)
+# Maximum devices to be used as offline logstorage devices
+OfflineLogstorageMaxDevices = 1
+
+# Path to store DLT offline log storage messages (Default: off)
+OfflineLogstorageDirPath = /var/nvlog/dlt
+
+# File options
+# Appends timestamp in log file name, Disable by setting to 0 (Default: 1)
+OfflineLogstorageTimestamp = 1
+
+# Appends delimiter in log file name, allowed punctutations only (Default: _)
+OfflineLogstorageDelimiter = _
+
+# Wrap around value for log file count in file name (Default: UINT_MAX)
+OfflineLogstorageMaxCounter = 999
+
+# Maximal used memory for Logstorage Cache in KB (Default: 30000 KB)
+OfflineLogstorageCacheSize = 4096
+
+##############################################################################
+# UDP Multicast Configuration #
+##############################################################################
+# Enable UDP connection support for daemon(Control Message/Multicast is enabled)
+# UDPConnectionSetup = 1
+
+# UDP multicast address(default:225.0.0.37)
+# UDPMulticastIPAddress = 225.0.0.37
+
+# UDP multicast port(default:3491)
+# UDPMulticastIPPort = 3491
+
+##############################################################################
+# BindAddress Limitation #
+##############################################################################
+# Accept connections only on this list of IP addresses (Default: "0.0.0.0" INADDR_ANY)
+# The IP addresses must be separated with ',' or ';' but not with space character ' '
+# If DLT_USE_IPv6 flag is ON, then only IPv6 addresses are accepted
+# If DLT_USE_IPv6 flag is OFF, then only IPv4 addresses are accepted
+# BindAddress = 160.48.199.97;160.48.199.98
diff --git a/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt_logstorage.conf b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt_logstorage.conf
new file mode 100644
index 00000000..fa8dac84
--- /dev/null
+++ b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon/dlt_logstorage.conf
@@ -0,0 +1,9 @@
+[FILTER1]
+LogAppName=.*
+ContextName=.*
+LogLevel=DLT_LOG_INFO
+File=dltlog
+FileSize=2000000
+NOFiles=10
+EcuID=ECU1
+
diff --git a/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon_%.bbappend b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon_%.bbappend
new file mode 100644
index 00000000..75402fc6
--- /dev/null
+++ b/meta-agl-ic-container/recipes-extended/dlt-daemon/dlt-daemon_%.bbappend
@@ -0,0 +1,72 @@
+# DLT for Linux container integration
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI:append = " \
+ file://0001-Disable-noisy-log-from-dlt-daemon.patch \
+ file://dlt.conf \
+ file://dlt-system.conf \
+ file://dlt_logstorage.conf \
+"
+
+# Mandatory require to systemd feature
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+PACKAGECONFIG = "systemd systemd-watchdog systemd-journal dlt-system unixsocket"
+
+# General Options
+PACKAGECONFIG[unixsocket] = "-DDLT_IPC=UNIX_SOCKET -DDLT_USER_IPC_PATH=${DLT_COMMON_IPC_PATH},-DDLT_IPC=FIFO"
+
+# Common DLT log transfer path between host and guest
+DLT_COMMON_IPC_PATH = "/run/dlt/"
+
+# Breakdown each package from all in one
+PACKAGE_BEFORE_PN:append = "libdlt ${PN}-command ${PN}-system ${PN}-gateway ${PN}-dbus ${PN}-example"
+
+SYSTEMD_PACKAGES:append = " \
+ ${@bb.utils.contains('PACKAGECONFIG', 'dlt-system', '${PN}-system', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'dlt-dbus', ' ${PN}-dbus', '', d)} \
+"
+SYSTEMD_SERVICE:${PN}-system = "dlt-system.service"
+SYSTEMD_AUTO_ENABLE:${PN}-system = "enable"
+SYSTEMD_SERVICE:${PN}-dbus = "dlt-dbus.service"
+SYSTEMD_AUTO_ENABLE:${PN}-dbus = "enable"
+SYSTEMD_SERVICE:${PN} = "dlt.service"
+
+do_install:append() {
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/dlt.conf ${D}${sysconfdir}/
+ install -m 0644 ${WORKDIR}/dlt-system.conf ${D}${sysconfdir}/
+
+ install -d ${D}/var/nvlog/dlt
+ install -m 0644 ${WORKDIR}/dlt_logstorage.conf ${D}/var/nvlog/dlt
+}
+
+FILES:libdlt = "${libdir}/libdlt${SOLIBS}"
+FILES:${PN}-command = " \
+ ${bindir}/dlt-receive \
+ ${bindir}/dlt-control \
+ ${bindir}/dlt-convert \
+ ${bindir}/dlt-logstorage-ctrl \
+ ${bindir}/dlt-sortbytimestamp \
+ ${bindir}/dlt-adaptor-stdin \
+"
+FILES:${PN}-system = " \
+ ${bindir}/dlt-system \
+ ${sysconfdir}/dlt-system.conf \
+ ${systemd_system_unitdir}/dlt-system.service \
+"
+FILES:${PN}-gateway = " \
+ ${bindir}/dlt-passive-node-ctrl \
+ ${sysconfdir}/dlt_gateway.conf \
+"
+FILES:${PN}-dbus = " \
+ ${bindir}/dlt-dbus \
+ ${sysconfdir}/dlt-dbus.conf \
+"
+FILES:${PN}-example = " \
+ ${bindir}/dlt-example* \
+"
+FILES:${PN}:append = " \
+ /var/nvlog/dlt/dlt_logstorage.conf \
+"
diff --git a/meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb b/meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb
index 6a47cfe5..5e2025a7 100644
--- a/meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb
+++ b/meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb
@@ -8,4 +8,5 @@ IMAGE_ROOTFS_EXTRA_SPACE:append = "${@bb.utils.contains("DISTRO_FEATURES", "syst
IMAGE_INSTALL:append = " \
packagegroup-agl-ic-core \
+ packagegroup-agl-container-feature-logging-guest \
"
diff --git a/meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb b/meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb
index 1b4f7a27..305d1dd8 100644
--- a/meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb
+++ b/meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb
@@ -6,6 +6,7 @@ IMAGE_INSTALL += " \
kernel-image \
lxc \
drm-lease-manager \
+ packagegroup-agl-container-feature-logging-host \
"
CONTAINER_IMAGES ??= ""
diff --git a/meta-agl-ic-container/recipes-platform/packagegroups/packagegroup-agl-container-feature-logging.bb b/meta-agl-ic-container/recipes-platform/packagegroups/packagegroup-agl-container-feature-logging.bb
new file mode 100644
index 00000000..3b218005
--- /dev/null
+++ b/meta-agl-ic-container/recipes-platform/packagegroups/packagegroup-agl-container-feature-logging.bb
@@ -0,0 +1,31 @@
+SUMMARY = "AGL container integration feature packages for logging."
+DESCRIPTION = "This pacage group including AGL container integration feature packages \
+ for logging."
+HOMEPAGE = "https://confluence.automotivelinux.org/display/IC"
+
+LICENSE = "Apache-2.0"
+
+PACKAGE_ARCH = "${TUNE_PKGARCH}"
+
+inherit packagegroup
+
+PACKAGES = "\
+ ${PN}-host \
+ ${PN}-guest \
+ ${PN}-hostdev \
+ ${PN}-guestdev \
+"
+RDEPENDS:${PN}-host += "\
+ dlt-daemon \
+ dlt-daemon-system \
+"
+RDEPENDS:${PN}-guest += "\
+ dlt-daemon-system \
+"
+RDEPENDS:${PN}-hostdev += "\
+ ${PN}-host \
+ dlt-daemon-command \
+"
+RDEPENDS:${PN}-guestdev += "\
+ ${PN}-guest\
+"