linux-trace-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Add API to set severity to tracefs library logs
@ 2021-05-07  9:51 Tzvetomir Stoyanov (VMware)
  2021-05-07  9:51 ` [PATCH v2 1/3] libtracefs: Add API to set the log level Tzvetomir Stoyanov (VMware)
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Tzvetomir Stoyanov (VMware) @ 2021-05-07  9:51 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel

A new API to set the desired log level of the library.

These changes depend on "[PATCH 0/4] Add severity to library logs"
https://lore.kernel.org/linux-trace-devel/20210507095022.1079364-1-tz.stoyanov@gmail.com/

v2 changes:
  - Add a parameter to tep_vprint() for errno printing, insted of using the log
    level.
  - Added a patch to remove unneeded tep_vwarning() implementation from the unit
    tests.

Tzvetomir Stoyanov (VMware) (3):
  libtracefs: Add API to set the log level
  libtracefs: Document new log functionality
  libtracefs: Remove dummy tep_vwarning() from unit tests

 Documentation/libtracefs-log.txt | 76 ++++++++++++++++++++++++++++++++
 Documentation/libtracefs.txt     |  2 +
 include/tracefs.h                |  4 ++
 src/tracefs-utils.c              | 18 +++++++-
 utest/trace-utest.c              |  5 ---
 5 files changed, 99 insertions(+), 6 deletions(-)
 create mode 100644 Documentation/libtracefs-log.txt

-- 
2.31.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/3] libtracefs: Add API to set the log level
  2021-05-07  9:51 [PATCH v2 0/3] Add API to set severity to tracefs library logs Tzvetomir Stoyanov (VMware)
@ 2021-05-07  9:51 ` Tzvetomir Stoyanov (VMware)
  2021-05-07  9:51 ` [PATCH v2 2/3] libtracefs: Document new log functionality Tzvetomir Stoyanov (VMware)
  2021-05-07  9:51 ` [PATCH v2 3/3] libtracefs: Remove dummy tep_vwarning() from unit tests Tzvetomir Stoyanov (VMware)
  2 siblings, 0 replies; 4+ messages in thread
From: Tzvetomir Stoyanov (VMware) @ 2021-05-07  9:51 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel

Library log level is added and new API to set the desired level.
Log levels defined in libtraceevent are used. By default, the log level
of tracefs library is TEP_LOG_CRITICAL. When a new level is set, it is
also propagated to the libtraceevent.

Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
---
 include/tracefs.h   |  4 ++++
 src/tracefs-utils.c | 18 +++++++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/include/tracefs.h b/include/tracefs.h
index 73ee42b..08dda13 100644
--- a/include/tracefs.h
+++ b/include/tracefs.h
@@ -180,4 +180,8 @@ int tracefs_function_filter(struct tracefs_instance *instance, const char *filte
 int tracefs_function_notrace(struct tracefs_instance *instance, const char *filter,
 			     const char *module, unsigned int flags);
 
+
+/* Control library logs */
+void tracefs_set_loglevel(enum tep_loglevel level);
+
 #endif /* _TRACE_FS_H */
diff --git a/src/tracefs-utils.c b/src/tracefs-utils.c
index e10b333..9e37e75 100644
--- a/src/tracefs-utils.c
+++ b/src/tracefs-utils.c
@@ -15,6 +15,7 @@
 #include <unistd.h>
 #include <errno.h>
 
+#include <traceevent/event-parse.h>
 #include <traceevent/event-utils.h>
 #include "tracefs.h"
 #include "tracefs-local.h"
@@ -25,12 +26,27 @@
 #define _STR(x) #x
 #define STR(x) _STR(x)
 
+static int log_level = TEP_LOG_CRITICAL;
+
+/**
+ * tracefs_set_loglevel - set log level of the library
+ * @level: desired level of the library messages
+ */
+void tracefs_set_loglevel(enum tep_loglevel level)
+{
+	log_level = level;
+	tep_set_loglevel(level);
+}
+
 void __weak tracefs_warning(const char *fmt, ...)
 {
 	va_list ap;
 
+	if (log_level < TEP_LOG_WARNING)
+		return;
+
 	va_start(ap, fmt);
-	tep_vwarning("libtracefs", fmt, ap);
+	tep_vprint("libtracefs", TEP_LOG_WARNING, true, fmt, ap);
 	va_end(ap);
 }
 
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/3] libtracefs: Document new log functionality
  2021-05-07  9:51 [PATCH v2 0/3] Add API to set severity to tracefs library logs Tzvetomir Stoyanov (VMware)
  2021-05-07  9:51 ` [PATCH v2 1/3] libtracefs: Add API to set the log level Tzvetomir Stoyanov (VMware)
@ 2021-05-07  9:51 ` Tzvetomir Stoyanov (VMware)
  2021-05-07  9:51 ` [PATCH v2 3/3] libtracefs: Remove dummy tep_vwarning() from unit tests Tzvetomir Stoyanov (VMware)
  2 siblings, 0 replies; 4+ messages in thread
From: Tzvetomir Stoyanov (VMware) @ 2021-05-07  9:51 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel

Updated man pages with the new log API.

Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
---
 Documentation/libtracefs-log.txt | 76 ++++++++++++++++++++++++++++++++
 Documentation/libtracefs.txt     |  2 +
 2 files changed, 78 insertions(+)
 create mode 100644 Documentation/libtracefs-log.txt

diff --git a/Documentation/libtracefs-log.txt b/Documentation/libtracefs-log.txt
new file mode 100644
index 0000000..a4107e8
--- /dev/null
+++ b/Documentation/libtracefs-log.txt
@@ -0,0 +1,76 @@
+libtracefs(3)
+=============
+
+NAME
+----
+tracefs_set_loglevel - Set log level of the library
+
+SYNOPSIS
+--------
+[verse]
+--
+*#include <tracefs.h>*
+
+int *tracefs_set_loglevel*(enum tep_loglevel _level_);
+--
+
+DESCRIPTION
+-----------
+The _tracefs_set_loglevel()_ function sets the level of the library logs that will be printed on
+the console. See _libtraceevent(3)_ for detailed desciription of the log levels. Setting the log
+level to specific value means that logs from the previous levels will be printed too. For example
+_TEP_LOG_WARNING_ will print any logs with severity _TEP_LOG_WARNING_, _TEP_LOG_ERROR_ and
+_TEP_LOG_CRITICAL_. The default log level is _TEP_LOG_CRITICAL_.  When a new level is set, it is
+also propagated to the libtraceevent.
+
+EXAMPLE
+-------
+[source,c]
+--
+#include <tracefs.h>
+
+tracefs_set_loglevel(TEP_LOG_ALL);
+...
+/* call libtracefs or libtraceevent APIs and observe any logs they produce */
+...
+tracefs_set_loglevel(TEP_LOG_CRITICAL);
+--
+FILES
+-----
+[verse]
+--
+*tracefs.h*
+	Header file to include in order to have access to the library APIs.
+*-ltracefs*
+	Linker switch to add when building a program that uses the library.
+--
+
+SEE ALSO
+--------
+_libtracefs(3)_,
+_libtraceevent(3)_,
+_trace-cmd(1)_
+
+AUTHOR
+------
+[verse]
+--
+*Steven Rostedt* <rostedt@goodmis.org>
+*Tzvetomir Stoyanov* <tz.stoyanov@gmail.com>
+--
+REPORTING BUGS
+--------------
+Report bugs to  <linux-trace-devel@vger.kernel.org>
+
+LICENSE
+-------
+libtracefs is Free Software licensed under the GNU LGPL 2.1
+
+RESOURCES
+---------
+https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
+
+COPYING
+-------
+Copyright \(C) 2021 VMware, Inc. Free use of this software is granted under
+the terms of the GNU Public License (GPL).
diff --git a/Documentation/libtracefs.txt b/Documentation/libtracefs.txt
index 77d053d..2c9eabd 100644
--- a/Documentation/libtracefs.txt
+++ b/Documentation/libtracefs.txt
@@ -61,6 +61,8 @@ Writing data in the trace buffer:
 	int *tracefs_binary_write*(struct tracefs_instance pass:[*]_instance_, void pass:[*]_data_, int _len_);
 	void *tracefs_binary_close*(struct tracefs_instance pass:[*]_instance_);
 
+Control library logs:
+	int *tracefs_set_loglevel*(enum tep_loglevel _level_);
 --
 
 DESCRIPTION
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 3/3] libtracefs: Remove dummy tep_vwarning() from unit tests
  2021-05-07  9:51 [PATCH v2 0/3] Add API to set severity to tracefs library logs Tzvetomir Stoyanov (VMware)
  2021-05-07  9:51 ` [PATCH v2 1/3] libtracefs: Add API to set the log level Tzvetomir Stoyanov (VMware)
  2021-05-07  9:51 ` [PATCH v2 2/3] libtracefs: Document new log functionality Tzvetomir Stoyanov (VMware)
@ 2021-05-07  9:51 ` Tzvetomir Stoyanov (VMware)
  2 siblings, 0 replies; 4+ messages in thread
From: Tzvetomir Stoyanov (VMware) @ 2021-05-07  9:51 UTC (permalink / raw)
  To: rostedt; +Cc: linux-trace-devel

As the trace libraries have log levels, there is no need to implement a
dummy log function in order to silence the libraries logs.

Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
---
 utest/trace-utest.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/utest/trace-utest.c b/utest/trace-utest.c
index ee11826..58d4d4e 100644
--- a/utest/trace-utest.c
+++ b/utest/trace-utest.c
@@ -19,11 +19,6 @@ enum unit_tests {
 	RUN_ALL		= 0xFFFF
 };
 
-int tep_vwarning(const char *name, const char *fmt, va_list ap)
-{
-	return 0;
-}
-
 static void print_help(char **argv)
 {
 	printf("Usage: %s [OPTIONS]\n", basename(argv[0]));
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-05-07  9:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-07  9:51 [PATCH v2 0/3] Add API to set severity to tracefs library logs Tzvetomir Stoyanov (VMware)
2021-05-07  9:51 ` [PATCH v2 1/3] libtracefs: Add API to set the log level Tzvetomir Stoyanov (VMware)
2021-05-07  9:51 ` [PATCH v2 2/3] libtracefs: Document new log functionality Tzvetomir Stoyanov (VMware)
2021-05-07  9:51 ` [PATCH v2 3/3] libtracefs: Remove dummy tep_vwarning() from unit tests Tzvetomir Stoyanov (VMware)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).