linux-trace-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Add API to set severity to tracefs library logs
@ 2021-04-28  7:32 Tzvetomir Stoyanov (VMware)
  2021-04-28  7:32 ` [PATCH 1/2] libtracefs: Add API to set the log level Tzvetomir Stoyanov (VMware)
  2021-04-28  7:32 ` [PATCH 2/2] libtracefs: Document new log functionality Tzvetomir Stoyanov (VMware)
  0 siblings, 2 replies; 3+ messages in thread
From: Tzvetomir Stoyanov (VMware) @ 2021-04-28  7:32 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/20210428073001.755905-1-tz.stoyanov@gmail.com/

Tzvetomir Stoyanov (VMware) (2):
  libtracefs: Add API to set the log level
  libtracefs: Document new log functionality

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

-- 
2.30.2


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

* [PATCH 1/2] libtracefs: Add API to set the log level
  2021-04-28  7:32 [PATCH 0/2] Add API to set severity to tracefs library logs Tzvetomir Stoyanov (VMware)
@ 2021-04-28  7:32 ` Tzvetomir Stoyanov (VMware)
  2021-04-28  7:32 ` [PATCH 2/2] libtracefs: Document new log functionality Tzvetomir Stoyanov (VMware)
  1 sibling, 0 replies; 3+ messages in thread
From: Tzvetomir Stoyanov (VMware) @ 2021-04-28  7:32 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 551c37c..da40e4f 100644
--- a/include/tracefs.h
+++ b/include/tracefs.h
@@ -177,4 +177,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..3cd5208 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, fmt, ap);
 	va_end(ap);
 }
 
-- 
2.30.2


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

* [PATCH 2/2] libtracefs: Document new log functionality
  2021-04-28  7:32 [PATCH 0/2] Add API to set severity to tracefs library logs Tzvetomir Stoyanov (VMware)
  2021-04-28  7:32 ` [PATCH 1/2] libtracefs: Add API to set the log level Tzvetomir Stoyanov (VMware)
@ 2021-04-28  7:32 ` Tzvetomir Stoyanov (VMware)
  1 sibling, 0 replies; 3+ messages in thread
From: Tzvetomir Stoyanov (VMware) @ 2021-04-28  7:32 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.30.2


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

end of thread, other threads:[~2021-04-28  7:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-28  7:32 [PATCH 0/2] Add API to set severity to tracefs library logs Tzvetomir Stoyanov (VMware)
2021-04-28  7:32 ` [PATCH 1/2] libtracefs: Add API to set the log level Tzvetomir Stoyanov (VMware)
2021-04-28  7:32 ` [PATCH 2/2] libtracefs: Document new log functionality 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).