From patchwork Fri Aug 14 17:34:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 75565 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 457C8A04B0; Fri, 14 Aug 2020 19:34:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7CACF1C0CD; Fri, 14 Aug 2020 19:34:53 +0200 (CEST) Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by dpdk.org (Postfix) with ESMTP id 5FD151C0C0 for ; Fri, 14 Aug 2020 19:34:52 +0200 (CEST) Received: by mail-pg1-f196.google.com with SMTP id 189so4217015pgg.13 for ; Fri, 14 Aug 2020 10:34:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=75/RxtbuPmNwggjYKosjs3q1lkkYVRP7mTo6krEwNhw=; b=lxduagCHh2sIIcXXrQvWW6NMUEu2B5fwtISdHTzNs4WCP2W+WCBNF4pV+G+6x+Dk5w ZboSaMFA9aXik2QovCfx2a1Vb2BCQKdtRomrezXzJZhGeNEHILjwciQ1zv2spjD2LJcs c2rJWCHD9BZjQGaZViOTGFfTpWQZGTkB6FfUds2f0RH+dupVk50KRbgaosp/VW6exymd XQLsUMWkh6b2KQE8ofDJJC+Ksjhgh3NHdZUenVIYWD0evG8opCfiVcSWGG2fcJ4cPjAF lY1R7WlkkayoFeX0PQWqHv/nSsaGE6T9eqHpANqxa9Xlp3PFVams/i+CqvRWqg6nNam2 G1/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=75/RxtbuPmNwggjYKosjs3q1lkkYVRP7mTo6krEwNhw=; b=p7yXDopiHB6a2Qefi2Hif+DzglCJR5vBL+648Wp8uw82XllgghXlTMTtjRcPxcp6Ol qPyMG0M+QFZ3N9fDDzAs8cVlKe/Qnw2TyVsLJNF2VpM/pljzW/YcET72FTsBSDEBYkeI gaIh5tIvvbpLJtiEStlkawiLKnfFG3jClCE009kJXfiyCJ16vzicjMAkdJvQl/2DdVne sefq7R4rnBsSLkEtDm1UgWJuEba6PgLUWNgaOOQaa66hePrbO29KVTzr45s0ojtSIFQG s0+YbeoLEPgpTcZJq3dR+0cyeCGKjEOepO9bK7YF5RGpCFQufYlE3AMcHvq3iI8qhdsR M5CQ== X-Gm-Message-State: AOAM531uMzgTntp0DTLczpfz+CP00BBW2RGAJ1xOtlzZPVdf6vBfVxqh +tyF3s+E85qwe6SIzrbbYTACHeiRf/y85w== X-Google-Smtp-Source: ABdhPJyTlC3jYagI7AUTYADDMzn2ugAjnnvpg/80QvAK7UX89Z/4OW2i8TrH5+zYTbXS4BBZKNM2yA== X-Received: by 2002:a62:19d4:: with SMTP id 203mr2499880pfz.127.1597426490887; Fri, 14 Aug 2020 10:34:50 -0700 (PDT) Received: from hermes.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id v2sm8949236pjd.18.2020.08.14.10.34.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Aug 2020 10:34:50 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Fri, 14 Aug 2020 10:34:41 -0700 Message-Id: <20200814173441.23086-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH] eal: add option to put timestamp on console output X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When debugging driver or startup issues, it is useful to have a timestamp on each message printed. The messages in syslog already have a timestamp, but often syslog is not available during testing. The timestamp format is chosen to look like the default Linux dmesg timestamp. Example: [ 0.000040] EAL: Probing VFIO support... Signed-off-by: Stephen Hemminger --- doc/guides/linux_gsg/linux_eal_parameters.rst | 5 +++ lib/librte_eal/common/eal_common_options.c | 5 +++ lib/librte_eal/common/eal_internal_cfg.h | 1 + lib/librte_eal/common/eal_options.h | 2 + lib/librte_eal/linux/eal_log.c | 41 +++++++++++++++++-- 5 files changed, 51 insertions(+), 3 deletions(-) diff --git a/doc/guides/linux_gsg/linux_eal_parameters.rst b/doc/guides/linux_gsg/linux_eal_parameters.rst index bd3977cb3d91..9336046c63a9 100644 --- a/doc/guides/linux_gsg/linux_eal_parameters.rst +++ b/doc/guides/linux_gsg/linux_eal_parameters.rst @@ -118,3 +118,8 @@ Other options local5 local6 local7 + +* ``--log-timestamp`` + + Add a timestamp of seconds and microseconds to each log message + written to standard output. diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c index a5426e12346a..240610770ee1 100644 --- a/lib/librte_eal/common/eal_common_options.c +++ b/lib/librte_eal/common/eal_common_options.c @@ -76,6 +76,7 @@ eal_long_options[] = { {OPT_IOVA_MODE, 1, NULL, OPT_IOVA_MODE_NUM }, {OPT_LCORES, 1, NULL, OPT_LCORES_NUM }, {OPT_LOG_LEVEL, 1, NULL, OPT_LOG_LEVEL_NUM }, + {OPT_LOG_TIMESTAMP, 0, NULL, OPT_LOG_TIMESTAMP_NUM }, {OPT_TRACE, 1, NULL, OPT_TRACE_NUM }, {OPT_TRACE_DIR, 1, NULL, OPT_TRACE_DIR_NUM }, {OPT_TRACE_BUF_SIZE, 1, NULL, OPT_TRACE_BUF_SIZE_NUM }, @@ -1626,6 +1627,9 @@ eal_parse_common_option(int opt, const char *optarg, } break; } + case OPT_LOG_TIMESTAMP_NUM: + conf->log_timestamp = 1; + break; #ifndef RTE_EXEC_ENV_WINDOWS case OPT_TRACE_NUM: { @@ -1945,6 +1949,7 @@ eal_common_usage(void) " --"OPT_PROC_TYPE" Type of this process (primary|secondary|auto)\n" #ifndef RTE_EXEC_ENV_WINDOWS " --"OPT_SYSLOG" Set syslog facility\n" + " --"OPT_LOG_TIMESTAMP" Timestamp log output\n" #endif " --"OPT_LOG_LEVEL"= Set global log level\n" " --"OPT_LOG_LEVEL"=:\n" diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h index 13f93388a781..75c476870c57 100644 --- a/lib/librte_eal/common/eal_internal_cfg.h +++ b/lib/librte_eal/common/eal_internal_cfg.h @@ -70,6 +70,7 @@ struct internal_config { * per-node) non-legacy mode only. */ volatile int syslog_facility; /**< facility passed to openlog() */ + volatile uint8_t log_timestamp; /**< add timestamp to console output */ /** default interrupt mode for VFIO */ volatile enum rte_intr_mode vfio_intr_mode; /** the shared VF token for VFIO-PCI bound PF and VFs devices */ diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h index 89769d48b487..7c86f2e19109 100644 --- a/lib/librte_eal/common/eal_options.h +++ b/lib/librte_eal/common/eal_options.h @@ -35,6 +35,8 @@ enum { OPT_LCORES_NUM, #define OPT_LOG_LEVEL "log-level" OPT_LOG_LEVEL_NUM, +#define OPT_LOG_TIMESTAMP "log-timestamp" + OPT_LOG_TIMESTAMP_NUM, #define OPT_TRACE "trace" OPT_TRACE_NUM, #define OPT_TRACE_DIR "trace-dir" diff --git a/lib/librte_eal/linux/eal_log.c b/lib/librte_eal/linux/eal_log.c index 43c8460bfb07..cbd0924ec847 100644 --- a/lib/librte_eal/linux/eal_log.c +++ b/lib/librte_eal/linux/eal_log.c @@ -5,9 +5,12 @@ #include #include #include +#include +#include #include #include #include +#include #include #include @@ -18,6 +21,9 @@ #include #include "eal_private.h" +#include "eal_internal_cfg.h" + +static struct timespec log_start_time; /* * default log function @@ -25,11 +31,38 @@ static ssize_t console_log_write(__rte_unused void *c, const char *buf, size_t size) { + const struct internal_config *internal_conf + = eal_get_internal_configuration(); ssize_t ret; + char tbuf[64]; + struct iovec iov[2]; + + if (internal_conf->log_timestamp) { + struct timespec ts; + + /* format up monotonic timestamp */ + clock_gettime(CLOCK_MONOTONIC, &ts); + ts.tv_sec -= log_start_time.tv_sec; + ts.tv_nsec -= log_start_time.tv_nsec; + if (ts.tv_nsec < 0) { + --ts.tv_sec; + ts.tv_nsec += 1000000000ul; + } - /* write on stdout */ - ret = fwrite(buf, 1, size, stdout); - fflush(stdout); + iov[0].iov_base = tbuf; + iov[0].iov_len = snprintf(tbuf, sizeof(tbuf), "[%8lu.%06lu] ", + ts.tv_sec, ts.tv_nsec / 1000u); + + /* extra cast is workaround to remove const quallifier */ + iov[1].iov_base = (void *)(uintptr_t)buf; + iov[1].iov_len = size; + + fflush(stdout); + ret = writev(STDOUT_FILENO, iov, 2); + } else { + /* write on stdout */ + ret = fwrite(buf, 1, size, stdout); + } /* Syslog error levels are from 0 to 7, so subtract 1 to convert */ syslog(rte_log_cur_msg_loglevel() - 1, "%.*s", (int)size, buf); @@ -50,6 +83,8 @@ rte_eal_log_init(const char *id, int facility) { FILE *log_stream; + clock_gettime(CLOCK_MONOTONIC, &log_start_time); + log_stream = fopencookie(NULL, "w+", console_log_func); if (log_stream == NULL) return -1; From patchwork Thu Mar 21 16:00:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 138665 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0DF0C43D17; Thu, 21 Mar 2024 17:17:32 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EEF6942DF5; Thu, 21 Mar 2024 17:17:31 +0100 (CET) Received: from mail-oa1-f54.google.com (mail-oa1-f54.google.com [209.85.160.54]) by mails.dpdk.org (Postfix) with ESMTP id 18792427E1 for ; Thu, 21 Mar 2024 17:17:30 +0100 (CET) Received: by mail-oa1-f54.google.com with SMTP id 586e51a60fabf-22222357d76so453056fac.2 for ; Thu, 21 Mar 2024 09:17:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1711037850; x=1711642650; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Nj6jIqUFW0rlyfwHhidWD2j4d4a0Rcwr1fefGVhNkKk=; b=ymL3zrrEYHSwTmxcoXxgDY/WWNgJmB9b8SuUFo0sQZJnFgnRYhz+s3CiiLkjSQqwqA OBBdkClwORA+Uzqib83TaP0RaA8o2D3OZWAiVkEPYN6pS11AW4B0MzEjzdF3TmEwzciS js8PReDjKi/OrZWCnCW/gJAZfK8dd4SE5GbNMi0yh7qtC7dhMzrczk/ODj/MoA+p2IIr TisE8gt3ArQeZGYrAKFoAHdU3Aha5CYDCrSAgymRFhATD5Ktvp9AtA2L2vvAgeIMori9 Hy838ohrKKi+63XMM20bmFHknw0X2E9ndC29s+jKT2tV2k+ku1qJKgWtoJf+E1f1fcaj Uv3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711037850; x=1711642650; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Nj6jIqUFW0rlyfwHhidWD2j4d4a0Rcwr1fefGVhNkKk=; b=ANwwJPrIb5D+w7bfPHKa2OqVgjxHMWC9oO/+x37WZ5KPtQq96MGaQIkvzc+HeMbA68 7XqGCW52YF6HO5IVLNiTdzY3xiQkHPxx6RhX1N4COeWrPLfTp+Izy0/GRZwPII/JgwcI vqWCgPPQEU1kCvt3RB1c5IXXr8fpODq361vRv2cgQbftppoouxP0vDuYTOBYeMoLQuBa QvJRN+BbSrd69WXuzv5LN/GTLl+lDV36cT7z0etd5HXd0/S1KFqOAl9F7KZyK6r7pgco 2K5yRURQERIRg9yCZyxGzFfhbgAg8OjNkdXQpPplvWnTkrwN1ZxFim8KboJpMT+bW3B7 NKvg== X-Gm-Message-State: AOJu0YyRvHiaVmFoN4Lvs2+7Svf/4SPPNTc/TLEoT59NjQ1n5SIF/9IZ IxXKzZdj+nqlvmRzr/2lVv0RA1A8hDECMdscKC1IvlqdxtrBf9JSNPVPuJTMMgYYlyDvOodS1cQ 5 X-Google-Smtp-Source: AGHT+IH5AwqKq8AKiAa6wFu25sNjHNKI8rat4508mKtyggdDj6wyhqDHO6jDGvXO/dhmAx5Ool4i9w== X-Received: by 2002:a05:6358:7f0b:b0:17e:69cf:2105 with SMTP id p11-20020a0563587f0b00b0017e69cf2105mr2957674rwn.29.1711037520253; Thu, 21 Mar 2024 09:12:00 -0700 (PDT) Received: from hermes.local (204-195-123-203.wavecable.com. [204.195.123.203]) by smtp.gmail.com with ESMTPSA id w62-20020a638241000000b005e485fbd455sm41815pgd.45.2024.03.21.09.11.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Mar 2024 09:11:59 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v10 05/10] eal: do not duplicate rte_init_alert() messages Date: Thu, 21 Mar 2024 09:00:21 -0700 Message-ID: <20240321161146.340421-6-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240321161146.340421-1-stephen@networkplumber.org> References: <20200814173441.23086-1-stephen@networkplumber.org> <20240321161146.340421-1-stephen@networkplumber.org> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The message already goes through logging, and does not need to be printed on stderr. Message level should be ALERT to match function name. Signed-off-by: Stephen Hemminger --- lib/eal/freebsd/eal.c | 3 +-- lib/eal/linux/eal.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c index 777770176339..e3f25f619715 100644 --- a/lib/eal/freebsd/eal.c +++ b/lib/eal/freebsd/eal.c @@ -530,8 +530,7 @@ rte_eal_iopl_init(void) static void rte_eal_init_alert(const char *msg) { - fprintf(stderr, "EAL: FATAL: %s\n", msg); - EAL_LOG(ERR, "%s", msg); + EAL_LOG(ALERT, "%s", msg); } /* Launch threads, called at application init(). */ diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c index e515f3cbc8a8..461f0c093357 100644 --- a/lib/eal/linux/eal.c +++ b/lib/eal/linux/eal.c @@ -840,8 +840,7 @@ static int rte_eal_vfio_setup(void) static void rte_eal_init_alert(const char *msg) { - fprintf(stderr, "EAL: FATAL: %s\n", msg); - EAL_LOG(ERR, "%s", msg); + EAL_LOG(ALERT, "%s", msg); } /* From patchwork Thu Mar 21 16:00:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 138663 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 15D6443D17; Thu, 21 Mar 2024 17:12:05 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BF83942DC3; Thu, 21 Mar 2024 17:12:04 +0100 (CET) Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by mails.dpdk.org (Postfix) with ESMTP id 1D20E427E1 for ; Thu, 21 Mar 2024 17:12:03 +0100 (CET) Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-6e6a9fafacdso964828b3a.2 for ; Thu, 21 Mar 2024 09:12:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1711037522; x=1711642322; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IQQWfLs/rkE7rpozeif9leaDk6Fe1YevxA9gj3J8Udo=; b=DNfrgmHb+/tSTnKsRmsokgm73sTAdVXvkZgXz34hV0Dghpo22VT84+yTFWrF+w+fhI Z+noOIm3frHaSbrS7kTvoGPCkTnSEHnC37eJ/HPN9Wqstxns+lAnkWsannA7OyRzBGv/ feb/XEdBb+9dWy6/8j0CnkPLVLBMo/IhefxMoZubVTZFU0syY4/kSkr/Hy5ThZuOHbDi Vv13DlQ9bBvXVY/JYJb70nFCycJnoBqopHUwkAjJbtAVVZiIblKElQjQRqFFvYLHIIDk iJSeuUrj+astWtdPIbb2HVlHuWboRT1R7vLsMZT8c6M7X+beBsRTsnP0tKMZmMHpKygi apYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711037522; x=1711642322; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IQQWfLs/rkE7rpozeif9leaDk6Fe1YevxA9gj3J8Udo=; b=n49krh2uciLslrdX1jValBNo2HiSLEufSc640WoeRJGyXWGSAqPGbdPGaOgC52BZa3 joUIPKhOTsro9IjUIf8pyPxIPRV/yK58DRAMIM21mqujUTDw0VnQKPfYXLdNdwtcEbMC HFNQbw4LdbtX+9Bca95tMhyf0SufWPF2pju3f4SJZP7vj8B4RsEudWVndfEpCA1QG2oB R4JWwy/ldIL6uFpQI5vmvLLIbmh9UWYQhnfQ7D80JfKSu31NaUmFxr+bivoKZfa8sdbl Qy52e4kqhUaIjKLB7e7JVXEoDNhBuGh+5L0RpKsZIIMEtSYwHAWQJGNMW+YC7eKsr5zH f8LQ== X-Gm-Message-State: AOJu0YzLoH+VbBf2LKw/wsYXKJeuQEkYha+kjKidWvjmxl4MAS6ZfnKU gbxDgzwPRcHnG9/mmLwZFbo957V9If4FSzUBoDvGJhOZwFgaDR1xFgF0lREZamqonZ4P4GNU3Fm x X-Google-Smtp-Source: AGHT+IFVuxLcjExAE0xxCohJfWwETHocc9RBcs+WS4TnBUKS5SjT41A5XJM+9RgW5sgQz7QpLge5PQ== X-Received: by 2002:a05:6a00:1482:b0:6e6:98bf:7b62 with SMTP id v2-20020a056a00148200b006e698bf7b62mr2643493pfu.8.1711037521786; Thu, 21 Mar 2024 09:12:01 -0700 (PDT) Received: from hermes.local (204-195-123-203.wavecable.com. [204.195.123.203]) by smtp.gmail.com with ESMTPSA id w62-20020a638241000000b005e485fbd455sm41815pgd.45.2024.03.21.09.12.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Mar 2024 09:12:01 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v10 07/10] eal: allow user to set default log stream before init Date: Thu, 21 Mar 2024 09:00:23 -0700 Message-ID: <20240321161146.340421-8-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240321161146.340421-1-stephen@networkplumber.org> References: <20200814173441.23086-1-stephen@networkplumber.org> <20240321161146.340421-1-stephen@networkplumber.org> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org It is useful for application to be able to set the default log stream before call rte_eal_init(). This makes all messages go to the new default. For example, to skip using syslog; just doing rte_openlog_stream(stderr); There is no reason for helper command line applications to clutter syslog with messages. Signed-off-by: Stephen Hemminger Acked-by: Tyler Retzlaff --- app/dumpcap/main.c | 3 +++ app/pdump/main.c | 3 +++ app/proc-info/main.c | 3 +++ lib/log/log.c | 6 ++++++ lib/log/log_internal.h | 2 ++ lib/log/log_unix.c | 4 ++++ lib/log/version.map | 1 + 7 files changed, 22 insertions(+) diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c index cc0f66b2bc61..27934ca7e688 100644 --- a/app/dumpcap/main.c +++ b/app/dumpcap/main.c @@ -633,6 +633,9 @@ static void dpdk_init(void) rte_panic("No memory\n"); } + /* keep any logging away from syslog. */ + rte_openlog_stream(stderr); + if (rte_eal_init(eal_argc, eal_argv) < 0) rte_exit(EXIT_FAILURE, "EAL init failed: is primary process running?\n"); } diff --git a/app/pdump/main.c b/app/pdump/main.c index a9205e130bb1..7b9ba68b1a14 100644 --- a/app/pdump/main.c +++ b/app/pdump/main.c @@ -995,6 +995,9 @@ main(int argc, char **argv) argc += 2; + /* keep any logging away from syslog. */ + rte_openlog_stream(stderr); + diag = rte_eal_init(argc, argp); if (diag < 0) rte_panic("Cannot init EAL\n"); diff --git a/app/proc-info/main.c b/app/proc-info/main.c index b672aaefbe99..24ee52c4ac7a 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -2149,6 +2149,9 @@ main(int argc, char **argv) argc += 4; + /* keep any logging away from syslog. */ + rte_openlog_stream(stderr); + ret = rte_eal_init(argc, argp); if (ret < 0) rte_panic("Cannot init EAL\n"); diff --git a/lib/log/log.c b/lib/log/log.c index 255f757d94cc..4cc944305057 100644 --- a/lib/log/log.c +++ b/lib/log/log.c @@ -519,6 +519,12 @@ eal_log_set_default(FILE *default_log) #endif } +FILE * +eal_log_get_default(void) +{ + return default_log_stream; +} + /* * Called by eal_cleanup */ diff --git a/lib/log/log_internal.h b/lib/log/log_internal.h index 451629f1c1ba..c77e687e28bc 100644 --- a/lib/log/log_internal.h +++ b/lib/log/log_internal.h @@ -21,6 +21,8 @@ int eal_log_init(const char *id, int facility); */ __rte_internal void eal_log_set_default(FILE *default_log); +__rte_internal +FILE *eal_log_get_default(void); /* * Save a log option for later. diff --git a/lib/log/log_unix.c b/lib/log/log_unix.c index ae38b4bf3a59..c56f80ac6967 100644 --- a/lib/log/log_unix.c +++ b/lib/log/log_unix.c @@ -49,6 +49,10 @@ eal_log_init(const char *id, int facility) { FILE *log_stream; + /* skip if user has already setup a log stream */ + if (eal_log_get_default()) + return 0; + log_stream = fopencookie(NULL, "w+", console_log_func); if (log_stream == NULL) return -1; diff --git a/lib/log/version.map b/lib/log/version.map index 0648f8831aff..6ecc656d1d65 100644 --- a/lib/log/version.map +++ b/lib/log/version.map @@ -25,6 +25,7 @@ DPDK_24 { INTERNAL { global: + eal_log_get_default; eal_log_init; eal_log_level2str; eal_log_save_pattern; From patchwork Thu Mar 21 16:00:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 138666 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D272043D17; Thu, 21 Mar 2024 17:18:11 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B7B2B42DC3; Thu, 21 Mar 2024 17:18:11 +0100 (CET) Received: from mail-il1-f175.google.com (mail-il1-f175.google.com [209.85.166.175]) by mails.dpdk.org (Postfix) with ESMTP id C320B427E1 for ; Thu, 21 Mar 2024 17:18:10 +0100 (CET) Received: by mail-il1-f175.google.com with SMTP id e9e14a558f8ab-3667770b8e8so5259695ab.0 for ; Thu, 21 Mar 2024 09:18:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1711037890; x=1711642690; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hqeA3Z23W4oIs9rPBGRyEAa5ziQrrAlyT6cOMR/IRh4=; b=xmB3WlkZHTRcBiP0UGDeGDCER4s5eXYuwiXL3A7KLqBQHRbWRMhbkwLaFbBgQKHJsH QOv3ftSohVP8ibj/RhfD4Y58Cz04hnRtHMO1dWjGkaDFmxbz/wgxtck+iRFcIzlp0sz7 hIZT4CfSTnKZ3azcCY0p6s3OlI7HBLuEy90bslNRPmTDHsOgZcI616BQBdqf2zcSiJhn odVjCNaGfB4FLkeKZgD8exJCUhy+xX4HrUzDbNswBCKc8RVZy8Mqd9icaquwowewE7On HBOUIDLV+kYd5OxhSRkz/I8ibEheLjlDkjPVYGYeZUXgVKcyG2XsZcdirI2pMA7hm9c4 DGMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711037890; x=1711642690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hqeA3Z23W4oIs9rPBGRyEAa5ziQrrAlyT6cOMR/IRh4=; b=QaHiJukyODUoPx4Ip9dkxsCqvptG4ob3AfbFvmR/gSViCtv0ILTbfrSHYA0EvMPboI GfXo0opxHQCUOPDBpMibvt1Xp8WiAU5boOTgOyuajsBIJ2YtLclIFsksXARVPFk+cRMn ex39BeLPFeM1v0wsNpwZtqpoH+qS5Cz0rVToMhF0UR/uynGSoMOTaAu9+eIdr0ToyRa+ xmyY8QRnH/mc3INrTnWjbH5SAUT9lUrAidajNXH9KlL8ApVzVgt/1ZUNbMMA1d9DPOpf SlF26Mh0j8YDHpwtjoqQp6ZUYMNFDFiagr8l8bdhmq3JRivFaoPkybBawINcwxKA7SJg uE+Q== X-Gm-Message-State: AOJu0YxsK2re/WukUaNT/nzlkQ6vUuGHsIQnGrjUizLzel54p/a9DUke dUna33MMLZms8yKU2sJQiPM8b28XHM8fb1s/155wnXhgE7Dvb9qIL6a1eDNZqt1qG/U3UZvD9FP 7 X-Google-Smtp-Source: AGHT+IGHtaDJDZ0pm0a43uDe66akgR1s1xQHZZt8UiuJygLdpGIKY5Gm6hGwU1pKxIViFnHerwWzfQ== X-Received: by 2002:a05:6a20:dda4:b0:1a3:3c9b:182 with SMTP id kw36-20020a056a20dda400b001a33c9b0182mr5368109pzb.57.1711037523643; Thu, 21 Mar 2024 09:12:03 -0700 (PDT) Received: from hermes.local (204-195-123-203.wavecable.com. [204.195.123.203]) by smtp.gmail.com with ESMTPSA id w62-20020a638241000000b005e485fbd455sm41815pgd.45.2024.03.21.09.12.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Mar 2024 09:12:03 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v10 09/10] log: colorize log output Date: Thu, 21 Mar 2024 09:00:25 -0700 Message-ID: <20240321161146.340421-10-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240321161146.340421-1-stephen@networkplumber.org> References: <20200814173441.23086-1-stephen@networkplumber.org> <20240321161146.340421-1-stephen@networkplumber.org> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Like dmesg, colorize the log output (unless redirected to file). Timestamp is green, the subsystem is in yellow and the message is red if urgent, boldface if an error, and normal for info and debug messages. Signed-off-by: Stephen Hemminger --- lib/eal/common/eal_common_options.c | 10 +++ lib/eal/common/eal_options.h | 2 + lib/log/log_internal.h | 5 ++ lib/log/log_unix.c | 132 +++++++++++++++++++++++++--- lib/log/log_windows.c | 6 ++ lib/log/version.map | 1 + 6 files changed, 146 insertions(+), 10 deletions(-) diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c index 4e2c3d0f255c..522634f1dcfa 100644 --- a/lib/eal/common/eal_common_options.c +++ b/lib/eal/common/eal_common_options.c @@ -78,6 +78,7 @@ eal_long_options[] = { {OPT_LCORES, 1, NULL, OPT_LCORES_NUM }, {OPT_LOG_LEVEL, 1, NULL, OPT_LOG_LEVEL_NUM }, {OPT_LOG_TIMESTAMP, 2, NULL, OPT_LOG_TIMESTAMP_NUM }, + {OPT_LOG_COLOR, 1, NULL, OPT_LOG_COLOR_NUM }, {OPT_TRACE, 1, NULL, OPT_TRACE_NUM }, {OPT_TRACE_DIR, 1, NULL, OPT_TRACE_DIR_NUM }, {OPT_TRACE_BUF_SIZE, 1, NULL, OPT_TRACE_BUF_SIZE_NUM }, @@ -1910,6 +1911,15 @@ eal_parse_common_option(int opt, const char *optarg, } break; + + case OPT_LOG_COLOR_NUM: + if (eal_log_color(optarg) < 0) { + EAL_LOG(ERR, "invalid parameters for --" + OPT_LOG_COLOR); + return -1; + } + break; + case OPT_TRACE_NUM: { if (eal_trace_args_save(optarg) < 0) { EAL_LOG(ERR, "invalid parameters for --" diff --git a/lib/eal/common/eal_options.h b/lib/eal/common/eal_options.h index e24c9eca53ca..5a63c1dd3a32 100644 --- a/lib/eal/common/eal_options.h +++ b/lib/eal/common/eal_options.h @@ -37,6 +37,8 @@ enum { OPT_LOG_LEVEL_NUM, #define OPT_LOG_TIMESTAMP "log-timestamp" OPT_LOG_TIMESTAMP_NUM, +#define OPT_LOG_COLOR "log-color" + OPT_LOG_COLOR_NUM, #define OPT_TRACE "trace" OPT_TRACE_NUM, #define OPT_TRACE_DIR "trace-dir" diff --git a/lib/log/log_internal.h b/lib/log/log_internal.h index 0e18d147cf98..b90c668f4668 100644 --- a/lib/log/log_internal.h +++ b/lib/log/log_internal.h @@ -52,5 +52,10 @@ void rte_eal_log_cleanup(void); __rte_internal int eal_log_timestamp(const char *fmt); +/* + * Enable or disable color in log messages + */ +__rte_internal +int eal_log_color(const char *mode); #endif /* LOG_INTERNAL_H */ diff --git a/lib/log/log_unix.c b/lib/log/log_unix.c index cb8f17bc83ef..1af93795fec5 100644 --- a/lib/log/log_unix.c +++ b/lib/log/log_unix.c @@ -11,6 +11,7 @@ #include #include +#include #include #include "log_internal.h" @@ -24,15 +25,113 @@ enum eal_log_time_format { EAL_LOG_TIMESTAMP_ISO, }; +enum eal_log_color { + EAL_LOG_COLOR_AUTO = 0, /* default */ + EAL_LOG_COLOR_NEVER, + EAL_LOG_COLOR_ALWAYS, +}; + static struct { + enum eal_log_color color_mode; enum eal_log_time_format time_format; + bool show_color; struct timespec start_time; struct timespec last_time; struct tm last_tm; } log = { + .color_mode = EAL_LOG_COLOR_AUTO, .time_format = EAL_LOG_TIMESTAMP_NONE, }; +enum color { + COLOR_NONE, + COLOR_RED, + COLOR_GREEN, + COLOR_YELLOW, + COLOR_BLUE, + COLOR_MAGENTA, + COLOR_CYAN, + COLOR_WHITE, + COLOR_BOLD, + COLOR_CLEAR +}; + +static const char * const color_code[] = { + [COLOR_NONE] = "", + [COLOR_RED] = "\e[31m", + [COLOR_GREEN] = "\e[32m", + [COLOR_YELLOW] = "\e[33m", + [COLOR_BLUE] = "\e[34m", + [COLOR_MAGENTA] = "\e[35m", + [COLOR_CYAN] = "\e[36m", + [COLOR_WHITE] = "\e[37m", + [COLOR_BOLD] = "\e[1m", + [COLOR_CLEAR] = "\e[0m", +}; + +__rte_format_printf(3, 4) +static int color_fprintf(FILE *out, enum color color, const char *fmt, ...) +{ + va_list args; + int ret = 0; + + va_start(args, fmt); + ret = fprintf(out, "%s", color_code[color]); + ret += vfprintf(out, fmt, args); + ret += fprintf(out, "%s", color_code[COLOR_CLEAR]); + + return ret; +} + +static ssize_t +color_log_write(FILE *f, int level, const char *msg, size_t size) +{ + size_t i; + ssize_t ret = 0; + + /* find first : delimiter in message */ + for (i = 0; i < size; i++) { + if (msg[i] == ':') { + ++i; /* put colon in the color */ + ret = color_fprintf(stderr, COLOR_YELLOW, "%.*s", (int)i, msg); + msg += i; + size -= i; + break; + } + } + + if (level <= 0 || level >= (int)RTE_LOG_INFO) + ret += fprintf(f, "%.*s", (int)size, msg); + else if (level >= (int)RTE_LOG_ERR) + ret += color_fprintf(f, COLOR_BOLD, "%.*s", (int)size, msg); + else + ret += color_fprintf(f, COLOR_RED, "%.*s", (int)size, msg); + + return ret; +} + +/* + * Controls whether color is enabled: + * modes are: + * always - enable color output regardless + * auto - enable if stderr is a terminal + * never - color output is disabled. + */ +int +eal_log_color(const char *mode) +{ + if (mode == NULL || strcmp(mode, "always") == 0) + log.color_mode = EAL_LOG_COLOR_ALWAYS; + else if (strcmp(mode, "never") == 0) + log.color_mode = EAL_LOG_COLOR_NEVER; + else if (strcmp(mode, "auto") == 0) + log.color_mode = EAL_LOG_COLOR_AUTO; + else + return -1; + + return 0; +} + int eal_log_timestamp(const char *str) { @@ -153,18 +252,28 @@ console_log_timestamp(char *tsbuf, size_t tsbuflen) static ssize_t console_log_write(__rte_unused void *c, const char *msg, size_t size) { - char buf[128]; + int level = rte_log_cur_msg_loglevel(); + char tsbuf[128] = ""; ssize_t ret; - ret = console_log_timestamp(buf, sizeof(buf)); - if (ret == 0) - ret = fwrite(msg, 1, size, stderr); - else - ret = fprintf(stderr, "[%s] %.*s", buf, (int)size, msg); + ret = console_log_timestamp(tsbuf, sizeof(tsbuf)); + if (ret == 0) { + if (log.show_color) + ret = color_log_write(stderr, level, msg, size); + else + ret = fwrite(msg, 1, size, stderr); + } else { + if (log.show_color) { + color_fprintf(stderr, COLOR_GREEN, "[%s] ", tsbuf); + ret = color_log_write(stderr, level, msg, size); + } else { + ret = fprintf(stderr, "[%s] %.*s", tsbuf, (int)size, msg); + } + } fflush(stderr); /* Syslog error levels are from 0 to 7, so subtract 1 to convert */ - syslog(rte_log_cur_msg_loglevel() - 1, "%.*s", (int)size, msg); + syslog(level - 1, "%.*s", (int)size, msg); return ret; } @@ -190,13 +299,16 @@ eal_log_init(const char *id, int facility) { FILE *log_stream; - clock_gettime(CLOCK_MONOTONIC, &log.start_time); - log.last_time = log.start_time; - /* skip if user has already setup a log stream */ if (eal_log_get_default()) return 0; + log.show_color = (log.color_mode == EAL_LOG_COLOR_ALWAYS) || + (log.color_mode == EAL_LOG_COLOR_AUTO && isatty(STDERR_FILENO)); + + clock_gettime(CLOCK_MONOTONIC, &log.start_time); + log.last_time = log.start_time; + log_stream = fopencookie(NULL, "w+", console_log_func); if (log_stream == NULL) return -1; diff --git a/lib/log/log_windows.c b/lib/log/log_windows.c index 8aa68a181bec..1cb72f519a91 100644 --- a/lib/log/log_windows.c +++ b/lib/log/log_windows.c @@ -12,6 +12,12 @@ eal_log_timestamp(__rte_unused const char *fmt) return -1; /* not implemented */ } +int +eal_log_color(__rte_unused const char *mode) +{ + return -1; /* not implemented */ +} + /* set the log to default function, called during eal init process. */ int eal_log_init(__rte_unused const char *id, __rte_unused int facility) diff --git a/lib/log/version.map b/lib/log/version.map index 697cdb3cb1b2..1fe6955427b7 100644 --- a/lib/log/version.map +++ b/lib/log/version.map @@ -25,6 +25,7 @@ DPDK_24 { INTERNAL { global: + eal_log_color; eal_log_get_default; eal_log_init; eal_log_level2str; From patchwork Thu Mar 21 16:00:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 138664 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0583643D17; Thu, 21 Mar 2024 17:17:26 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 75A1442DC3; Thu, 21 Mar 2024 17:17:25 +0100 (CET) Received: from mail-oo1-f51.google.com (mail-oo1-f51.google.com [209.85.161.51]) by mails.dpdk.org (Postfix) with ESMTP id A445A427E1 for ; Thu, 21 Mar 2024 17:17:24 +0100 (CET) Received: by mail-oo1-f51.google.com with SMTP id 006d021491bc7-5a4789684abso644587eaf.0 for ; Thu, 21 Mar 2024 09:17:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1711037844; x=1711642644; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xVUryEj8Kq3FPCwIK8H3PBrS7GRSKTDof0Dxl18k0pg=; b=q2PqKZ70DLFdliHZKsP6C7uUQxBrgtifh8LnpAuDt/VCu/fZ9/EjuqbU/wlfQPFujj CoNiwZKBXtaO/DtfEFa/fiul+M5U/ylTDhNE/juGxACaHPO82mpSdtNEjlbkUXl2U9La QtCn/7y1qDA7imonRkSf0Qylyp7QH+cL46ezzHbIchCC63tVbvMOpiqXd61Pr7ZmVNUD li9vhrkV+OPiLwPbks7QclJh7CS/eL/wn+cpbyyY2n9CrCi2kCkKX1w4auMFe1TbmZ6F NtAcXkpVD5MPprnlCYcN7Rn5q5lbNR9Ivf6AT5KIevz6xLdRfU0fLjSU9e7Iy2/bcLQg GAYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711037844; x=1711642644; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xVUryEj8Kq3FPCwIK8H3PBrS7GRSKTDof0Dxl18k0pg=; b=EQ5/wHrI9oGFH8i7dEV4NoXCXWLy2IE6kmHeR+//MRPd8ikaQ/3czJ9zAdBpYOLAyl pgxzgtKGbb1rmHmkyf+YGJCq7lFeN+ri1r1JSXtfDw/3Q2bdkNHJpSWgp893WuHa105G sapEoduDCtrPB5FCH5mdEjycymjiL7sSA7udx6oiylpnfHXymzUr4atgk2AoUNuQQbMF m1qF76sU+yaUhNP3NE4WmoY0V775/kqkBHM1yFCQNvfrMeZQvODtDNEqFCAQs6qwrT3I omH/HiJ2h4GWB6EppVez8hCGXBEIeRdYwkFbP1EClUtBe94a5whVGEE8mznNBuoRHzD+ w7pg== X-Gm-Message-State: AOJu0Yz3nscmycZwOMl7fy7NFq/8rSTM3mV9lQNLf4NN4H1y1KO46ZCi iwIQQl/gfb35AEkBv6TjE+q7y2fpyA7vaMZSmMz6K1alqeSNatrI6KYoXzNXAr18DKMMuBowxSv Q X-Google-Smtp-Source: AGHT+IEvIK3jB9bYH3S7QMVncDNzJ77qQbAzTQ6av2TN2t3HbxrH8ilZWE97MWKmM0Jn58eBMafGsg== X-Received: by 2002:a05:6358:c009:b0:17b:f3f9:117d with SMTP id kv9-20020a056358c00900b0017bf3f9117dmr6159588rwc.16.1711037524351; Thu, 21 Mar 2024 09:12:04 -0700 (PDT) Received: from hermes.local (204-195-123-203.wavecable.com. [204.195.123.203]) by smtp.gmail.com with ESMTPSA id w62-20020a638241000000b005e485fbd455sm41815pgd.45.2024.03.21.09.12.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Mar 2024 09:12:04 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Subject: [PATCH v10 10/10] doc: add documentation of logging options Date: Thu, 21 Mar 2024 09:00:26 -0700 Message-ID: <20240321161146.340421-11-stephen@networkplumber.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240321161146.340421-1-stephen@networkplumber.org> References: <20200814173441.23086-1-stephen@networkplumber.org> <20240321161146.340421-1-stephen@networkplumber.org> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add documentation of new log-timestamp and log-color options. Signed-off-by: Stephen Hemminger --- doc/guides/linux_gsg/eal_args.include.rst | 54 +++++++++++++++++++---- 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/doc/guides/linux_gsg/eal_args.include.rst b/doc/guides/linux_gsg/eal_args.include.rst index 9cfbf7de8456..8ba54a62c0f9 100644 --- a/doc/guides/linux_gsg/eal_args.include.rst +++ b/doc/guides/linux_gsg/eal_args.include.rst @@ -122,6 +122,52 @@ Memory-related options to system pthread stack size unless the optional size (in kbytes) is specified. +Logging options +~~~~~~~~~~~~~~~ + +* ``--log-level `` + + Specify log level for a specific component. For example:: + + --log-level lib.eal:debug + + Can be specified multiple times. + +* ``--log-facility=facility`` + + Specifies the ``syslog`` facility passed to ``openlog``. + The facility can be: ``auth``, ``cron``, ``daemon``, ``ftp``, + ``lpr``, ``mail``, ``news``, ``user``, ``uucp``, + ``local0``, ``local1``, ``local2``, ``local3``, ``local4``, + ``local5``, ``local6``, or ``local7``. The default if + no facility is specified is ``daemon``. + +* ``--log-timestamp[=format]`` + + Add a time stamp to log messages that are sent to the console (stderr). + When format argument is omitted the time stamp is elapsed + seconds since the start of the DPDK application. + Other formats are: + +.. csv-table:: Log time stamp format + :header: "Format", "Description", "Example" + :widths: 6, 30, 32 + + "ctime", "Unix ctime", "``[Wed Mar 20 07:26:12 2024]``" + "delta", "Offset since last", "``[< 3.162373>]``" + "reltime", "Seconds since last or time if minute changed", "``[ +3.001791]`` or ``[Mar20 07:26:12]``" + "iso", "ISO-8601", "``[2024-03-20T07:26:12−07:00]``" + +* ``--log-color[=when]`` + + Colorize the console output. + The optional argument ``when`` can be ``auto``, ``never`` or ``always``. + If the when argument is omitted, it defaults to ``auto``. + To disable use of color:: + + --log-color=none + + Debugging options ~~~~~~~~~~~~~~~~~ @@ -134,14 +180,6 @@ Debugging options Use anonymous memory instead of hugepages (implies no secondary process support). -* ``--log-level `` - - Specify log level for a specific component. For example:: - - --log-level lib.eal:debug - - Can be specified multiple times. - * ``--trace=`` Enable trace based on regular expression trace name. By default, the trace is