WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=49ee869a22fc2914ac94e344e9b98c6e70d3fe8f

commit 49ee869a22fc2914ac94e344e9b98c6e70d3fe8f
Author: Gareth Halfacree <[email protected]>
Date:   Mon Dec 11 06:57:36 2017 -0800

    Wiki page log-levels.md changed with summary [] by Gareth Halfacree
---
 pages/develop/debug/log-levels.md.txt | 115 ++++------------------------------
 1 file changed, 12 insertions(+), 103 deletions(-)

diff --git a/pages/develop/debug/log-levels.md.txt 
b/pages/develop/debug/log-levels.md.txt
index 1a16a6014..01d2f6555 100644
--- a/pages/develop/debug/log-levels.md.txt
+++ b/pages/develop/debug/log-levels.md.txt
@@ -1,8 +1,8 @@
 ---
-~~Title: Log Levels~~
+~~Title: Error Logging~~
 ---
 
-# Log Levels #
+# Error Logging #
 
 EFL uses a common method to log error messages, called ``Eina_Log``, which 
allows you to adjust the verbosity of the logs using environment variables.
 
@@ -68,109 +68,18 @@ EINA_LOG_LEVEL={N} EINA_LOG_LEVELS_GLOB=eina_*:0 
./{application}
 
 Removing these internal logs from the output makes it easier for you to see 
your own domain messages.
 
-## Eina_Log_Print() ##
+### Aborting on Selected Log Level ##
 
-``Eina`` provides ``eina_log_print()``, a standard function to manage all 
logging messages. This function may be called directly or using helper macros 
including ``EINA_LOG_DBG()``, ``EINA_LOG_ERR()`` or those that take a specific 
domain as an argument as with ``EINA_LOG_DOM_DBG()`` and 
``EINA_LOG_DOM_ERR()``. Internally, ``eina_log_print()`` will call the function 
defined with ``eina_log_print_cb_set()``, which defaults to 
``eina_log_print_cb_stderr()`` but may be changed to do whatever [...]
+As well as controlling the logs themselves, the respective log levels can be 
used to close a program - calling ``abort()`` - once a message of a given level 
is logged, allowing you to automatically terminate execution. This is toggled 
through the environment variable ``EINA_LOG_ABORT``, while the level to be 
considered critical - and thus terminate execution - through the environment 
variable ``EINA_LOG_ABORT_LEVEL``.
 
-The logging system is thread-safe once initialized with 
``eina_log_threads_enable()``. The thread that calls this function first is 
considered "main thread" and other threads will have their thread id 
(``pthread_self()``) printed in the log message so it is easy to detect from 
where the messages are coming.
+> **NOTE:**
+> Aborting at a particular log level can also be controlled from within the 
application itself using the ``eina_log_abort_on_critical_set()`` and 
``eina_log_abort_on_critical_level_set()`` functions.
 
-The different logging levels serve to customize the amount of debugging 
information and may be used to automatically call ``abort()`` once a message of 
a given level is printed. This is controlled by the environment variable 
``EINA_LOG_ABORT`` and the level to be considered critical with 
``EINA_LOG_ABORT_LEVEL``. These can be changed with 
``eina_log_abort_on_critical_set()`` and 
``eina_log_abort_on_critical_level_set()``.
-
-The default maximum level to print is defined by the environment variable 
``EINA_LOG_LEVEL`` but may be set per-domain with ``EINA_LOG_LEVELS``. It will 
default to ``EINA_LOG_ERR``. This can be changed with ``eina_log_level_set()``.
-
-To use the log system ``Eina`` must be initialized with ``eina_init()`` and 
later shut down with ``eina_shutdown()``.
-
-### Controlling Print Callbacks ###
-
-The log module allows the user to change the way ``eina_log_print()`` displays 
messages. It suffices to pass to ``eina_log_print_cb_set()`` the function used 
to display the message. That function must be of type ``#Eina_Log_Print_Cb``. 
As custom data can be passed to that callback, customized messages can be 
displayed.
-
-It is suggested to not use ``__FILE__``, ``__FUNCTION__`` or ``__LINE__`` when 
writing that callback, but when defining macros like ``EINA_LOG_ERR()`` and 
others.
-
-## Logging from an Application ##
-
-The following example, available for download from the [Enlightenment Project 
git 
repository](https://git.enlightenment.org/tools/examples.git/tree/reference/c/eina/src/eina_log.c),
 demonstrates the control of logging from within an application.
-
-```c
-#define EFL_EO_API_SUPPORT 1
-#define EFL_BETA_API_SUPPORT 1
-
-#include <stdio.h>
-
-#include <Eina.h>
-#include <Efl_Core.h>
-
-/*
- * Efl Core Log examples.
- *
- * This demo shows how to log at various levels and to change what log is 
shown.
- * You can also use a custom log printer in your app as shown in _log_custom.
- */
-
-static double
-_divide(int num, int denom)
-{
-   if (denom == 0)
-     EINA_LOG_CRIT("Attempt to divide by 0\n");
-   else
-     {
-        if (denom < 0)
-          EINA_LOG_WARN("Possible undesirable effect, divide by negative 
number");
-
-        double ret = ((double) num / denom);
-        EINA_LOG_INFO("%d / %d = %f\n", num, denom, ret);
-        return ret;
-     }
-
-   return -1;
-}
-
-static void
-_divides()
-{
-   _divide(5, 1);
-   _divide(5, -1);
-   _divide(5, 0);
-}
-
-static void
-_log_levels()
-{
-   printf("Executing with default logging\n");
-   _divides();
-
-   eina_log_level_set(EINA_LOG_LEVEL_WARN);
-   printf("Executing with WARN level\n"); // same as EINA_LOG_LEVEL = 2
-   _divides();
-
-   eina_log_level_set(EINA_LOG_LEVEL_INFO);
-   printf("Executing with INFO on\n"); // same as EINA_LOG_LEVEL = 3
-   _divides();
-}
-
-void _print_cb(const Eina_Log_Domain *domain EINA_UNUSED, Eina_Log_Level level,
-              const char *file, const char *fnc, int line,
-              const char *fmt, void *data EINA_UNUSED, va_list args)
-{
-   fprintf(stdout, "LOG %d <%s (%s:%d)> ", level, fnc, file, line);
-   vfprintf(stdout, fmt, args);
-   putc('\n', stdout);
-}
+```bash
+EINA_LOG_ABORT_LEVEL={N} EINA_LOG_ABORT ./{application}
+```
 
-static void
-_log_custom()
-{
-   printf("Executing with custom log printer\n");
-   eina_log_print_cb_set(_print_cb, NULL);
-   _divides();
-}
+## Further Reading ##
 
-EAPI_MAIN void
-efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
-{
-   _log_levels();
-   _log_custom();
-
-   efl_exit(0);
-}
-EFL_MAIN()
-```
\ No newline at end of file
+[Eina Programming Guide: Logging](/develop/c/eina/logging.md)
+:    A reference, including example, for the Eina_Log module.
\ No newline at end of file

-- 


Reply via email to