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 description 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).
