\hypertarget{group__Eina__Log__Group}{\section{Log}
\label{group__Eina__Log__Group}\index{Log@{Log}}
}


Full-\/featured logging system.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct__Eina__Log__Domain}{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain}
\begin{DoxyCompactList}\small\item\em The domain used for logging. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{group__Eina__Log__Group_ga41d6e3b51ce5f50ef403428776a02626}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T}~\hyperlink{group__Eina__Log__Group_gaf22afd672720858d1df3a8c6a2abe21a}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+G\+L\+O\+B\+A\+L}
\begin{DoxyCompactList}\small\item\em This macro defines the domain to use with the macros \hyperlink{group__Eina__Log__Group_ga4423c9d7bdc95555cf045b66e21e1f5c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+D\+B\+G()}, \hyperlink{group__Eina__Log__Group_ga782f84a4805166d2707cb4d59217c64e}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+I\+N\+F\+O()}, \hyperlink{group__Eina__Log__Group_ga5073ce1fbcc1f6ea8d0670aac2ecce70}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+W\+A\+R\+N()}, \hyperlink{group__Eina__Log__Group_ga698d954a5fc2d120a553277361d68047}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+E\+R\+R()} and \hyperlink{group__Eina__Log__Group_ga50e2b86707c08c89e49759cb31b7b91c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+C\+R\+I\+T()}. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(D\+O\+M, L\+E\+V\+E\+L, fmt,...)
\begin{DoxyCompactList}\small\item\em Logs a message on the specified domain, level and format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga50e2b86707c08c89e49759cb31b7b91c}{\#define \hyperlink{group__Eina__Log__Group_ga50e2b86707c08c89e49759cb31b7b91c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+C\+R\+I\+T}(D\+O\+M, fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(D\+O\+M, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa620ee82716c2c262ad2929823cf24ebd}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+C\+R\+I\+T\+I\+C\+A\+L}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_ga50e2b86707c08c89e49759cb31b7b91c}

\begin{DoxyCompactList}\small\item\em Logs a message with level C\+R\+I\+T\+I\+C\+A\+L on the specified domain and format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga698d954a5fc2d120a553277361d68047}{\#define \hyperlink{group__Eina__Log__Group_ga698d954a5fc2d120a553277361d68047}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+E\+R\+R}(D\+O\+M, fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(D\+O\+M, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa8252243003214c2e38a3b228fc85eb80}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_ga698d954a5fc2d120a553277361d68047}

\begin{DoxyCompactList}\small\item\em Logs a message with level E\+R\+R\+O\+R on the specified domain and format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga782f84a4805166d2707cb4d59217c64e}{\#define \hyperlink{group__Eina__Log__Group_ga782f84a4805166d2707cb4d59217c64e}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+I\+N\+F\+O}(D\+O\+M, fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(D\+O\+M, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa0368139789af856a6ad9bbe4f21d195f}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+F\+O}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_ga782f84a4805166d2707cb4d59217c64e}

\begin{DoxyCompactList}\small\item\em Logs a message with level I\+N\+F\+O on the specified domain and format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga4423c9d7bdc95555cf045b66e21e1f5c}{\#define \hyperlink{group__Eina__Log__Group_ga4423c9d7bdc95555cf045b66e21e1f5c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+D\+B\+G}(D\+O\+M, fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(D\+O\+M, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aafdc5a5cfb78f5e4d5851447ed798af50}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+B\+G}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_ga4423c9d7bdc95555cf045b66e21e1f5c}

\begin{DoxyCompactList}\small\item\em Logs a message with level D\+E\+B\+U\+G on the specified domain and format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga5073ce1fbcc1f6ea8d0670aac2ecce70}{\#define \hyperlink{group__Eina__Log__Group_ga5073ce1fbcc1f6ea8d0670aac2ecce70}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+W\+A\+R\+N}(D\+O\+M, fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(D\+O\+M, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aae6fda047b87c6d22a23cbb7143dd2fe8}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_ga5073ce1fbcc1f6ea8d0670aac2ecce70}

\begin{DoxyCompactList}\small\item\em Logs a message with level W\+A\+R\+N on the specified domain and format. \end{DoxyCompactList}\item 
\#define \hyperlink{group__Eina__Log__Group_ga5b50827f35399f9ff87f5d9d817c764a}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T}(fmt,...)
\begin{DoxyCompactList}\small\item\em Logs a message with level C\+R\+I\+T\+I\+C\+A\+L on the default domain with the specified format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga2e33caeeeb6051526c01b7fea4d6c91b}{\#define \hyperlink{group__Eina__Log__Group_ga2e33caeeeb6051526c01b7fea4d6c91b}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+E\+R\+R}(fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(\hyperlink{group__Eina__Log__Group_ga41d6e3b51ce5f50ef403428776a02626}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T}, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa8252243003214c2e38a3b228fc85eb80}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_ga2e33caeeeb6051526c01b7fea4d6c91b}

\begin{DoxyCompactList}\small\item\em Logs a message with level E\+R\+R\+O\+R on the default domain with the specified format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_gafb145e82df0f9441244832c94e87a21b}{\#define \hyperlink{group__Eina__Log__Group_gafb145e82df0f9441244832c94e87a21b}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+I\+N\+F\+O}(fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(\hyperlink{group__Eina__Log__Group_ga41d6e3b51ce5f50ef403428776a02626}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T}, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa0368139789af856a6ad9bbe4f21d195f}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+F\+O}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_gafb145e82df0f9441244832c94e87a21b}

\begin{DoxyCompactList}\small\item\em Logs a message with level I\+N\+F\+O on the default domain with the specified format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga21c44f66537533db16ee8f475ae2ae70}{\#define \hyperlink{group__Eina__Log__Group_ga21c44f66537533db16ee8f475ae2ae70}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+W\+A\+R\+N}(fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(\hyperlink{group__Eina__Log__Group_ga41d6e3b51ce5f50ef403428776a02626}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T}, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aae6fda047b87c6d22a23cbb7143dd2fe8}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_ga21c44f66537533db16ee8f475ae2ae70}

\begin{DoxyCompactList}\small\item\em Logs a message with level W\+A\+R\+N on the default domain with the specified format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga09b88349373c2158f988d72375af5849}{\#define \hyperlink{group__Eina__Log__Group_ga09b88349373c2158f988d72375af5849}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+B\+G}(fmt,...)~\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G}(\hyperlink{group__Eina__Log__Group_ga41d6e3b51ce5f50ef403428776a02626}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T}, \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aafdc5a5cfb78f5e4d5851447ed798af50}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+B\+G}, fmt, \#\# \+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}\label{group__Eina__Log__Group_ga09b88349373c2158f988d72375af5849}

\begin{DoxyCompactList}\small\item\em Logs a message with level D\+E\+B\+U\+G on the default domain with the specified format. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga079e9de9602815a6de0d5188b65c07a2}{\#define \hyperlink{group__Eina__Log__Group_ga079e9de9602815a6de0d5188b65c07a2}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+S\+T\+A\+T\+E\+\_\+\+I\+N\+I\+T}~\hyperlink{group__Eina__Log__Group_gac6cb4966743a888defdb33610b4235aa}{\+\_\+eina\+\_\+log\+\_\+state\+\_\+init}}\label{group__Eina__Log__Group_ga079e9de9602815a6de0d5188b65c07a2}

\begin{DoxyCompactList}\small\item\em String that indicates the log system is initializing. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga527ad9352599d503a53bf834868d3461}{\#define \hyperlink{group__Eina__Log__Group_ga527ad9352599d503a53bf834868d3461}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+H\+U\+T\+D\+O\+W\+N}~\hyperlink{group__Eina__Log__Group_gabac7f0e5825da708e73faa9123f41fc6}{\+\_\+eina\+\_\+log\+\_\+state\+\_\+shutdown}}\label{group__Eina__Log__Group_ga527ad9352599d503a53bf834868d3461}

\begin{DoxyCompactList}\small\item\em String that indicates the log system is shutting down. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Eina__Log__Group_ga3e8bc7f3b9aa9140d1e5b91baf08ebe8}{typedef struct \hyperlink{struct__Eina__Log__Domain}{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain} \hyperlink{group__Eina__Log__Group_ga3e8bc7f3b9aa9140d1e5b91baf08ebe8}{Eina\+\_\+\+Log\+\_\+\+Domain}}\label{group__Eina__Log__Group_ga3e8bc7f3b9aa9140d1e5b91baf08ebe8}

\begin{DoxyCompactList}\small\item\em The domain used for logging. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{typedef enum \hyperlink{group__Eina__Log__Group_ga326699509b2e7578ace7c0a15b4a8c1a}{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Level} \hyperlink{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{Eina\+\_\+\+Log\+\_\+\+Level}}\label{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}

\begin{DoxyCompactList}\small\item\em List of available logging levels. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga76501a2d10e374980c4012664e4ca96f}{typedef void($\ast$ \hyperlink{group__Eina__Log__Group_ga76501a2d10e374980c4012664e4ca96f}{Eina\+\_\+\+Log\+\_\+\+Print\+\_\+\+Cb} )(const \hyperlink{group__Eina__Log__Group_ga3e8bc7f3b9aa9140d1e5b91baf08ebe8}{Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$d, \hyperlink{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{Eina\+\_\+\+Log\+\_\+\+Level} level, const char $\ast$file, const char $\ast$fnc, int line, const char $\ast$fmt, void $\ast$data, va\+\_\+list args)}\label{group__Eina__Log__Group_ga76501a2d10e374980c4012664e4ca96f}

\begin{DoxyCompactList}\small\item\em Type for print callbacks. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_gadfcd7fc51aaa188de388a7f4c6164d83}{typedef enum \hyperlink{group__Eina__Log__Group_ga125f3b55502884020a1546d0575ae052}{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+State} \hyperlink{group__Eina__Log__Group_gadfcd7fc51aaa188de388a7f4c6164d83}{Eina\+\_\+\+Log\+\_\+\+State}}\label{group__Eina__Log__Group_gadfcd7fc51aaa188de388a7f4c6164d83}

\begin{DoxyCompactList}\small\item\em List of available log states. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{group__Eina__Log__Group_ga326699509b2e7578ace7c0a15b4a8c1a}{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Level} \{ \\*
\hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa620ee82716c2c262ad2929823cf24ebd}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+C\+R\+I\+T\+I\+C\+A\+L}, 
\\*
\hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa8252243003214c2e38a3b228fc85eb80}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R}, 
\\*
\hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aae6fda047b87c6d22a23cbb7143dd2fe8}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N}, 
\\*
\hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa0368139789af856a6ad9bbe4f21d195f}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+F\+O}, 
\\*
\hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aafdc5a5cfb78f5e4d5851447ed798af50}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+B\+G}, 
\\*
\hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa880f2906e9b871ce8f590316d2f60652}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S}, 
\\*
\hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aaa3ab2a3e3ae9d08a60e939d56198bb96}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N} = (-\/2147483647 -\/ 1)
 \}
\begin{DoxyCompactList}\small\item\em List of available logging levels. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga125f3b55502884020a1546d0575ae052}{enum \hyperlink{group__Eina__Log__Group_ga125f3b55502884020a1546d0575ae052}{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+State} \{ \\*
{\bfseries E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+T\+A\+R\+T}, 
\\*
{\bfseries E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+S\+T\+A\+T\+E\+\_\+\+S\+T\+O\+P}
 \}}\label{group__Eina__Log__Group_ga125f3b55502884020a1546d0575ae052}

\begin{DoxyCompactList}\small\item\em List of available log states. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga3b838bcdf99ef996704261ac4c48820b}{eina\+\_\+log\+\_\+threads\+\_\+enable} (void)
\begin{DoxyCompactList}\small\item\em Enable logging module to handle threads. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga50184735e08f530d4139c28fcdb02fbb}{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+set} (\hyperlink{group__Eina__Log__Group_ga76501a2d10e374980c4012664e4ca96f}{Eina\+\_\+\+Log\+\_\+\+Print\+\_\+\+Cb} cb, void $\ast$data) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1)
\begin{DoxyCompactList}\small\item\em Sets logging method to use. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga018457ec82c2e428600d1023d4b92749}{eina\+\_\+log\+\_\+level\+\_\+set} (int level)
\begin{DoxyCompactList}\small\item\em Set the default log level. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__Log__Group_gaf825e9e4c1efa7c2b4155e3863b06408}{eina\+\_\+log\+\_\+level\+\_\+get} (void) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\begin{DoxyCompactList}\small\item\em Get the default log level. \end{DoxyCompactList}\item 
static \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Log__Group_ga6506707f51c09f5876cf8b4cf47e7e26}{eina\+\_\+log\+\_\+level\+\_\+check} (int level)
\begin{DoxyCompactList}\small\item\em Determine if a given {\ttfamily level} should be logged. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Log__Group_ga3441a26eba4e2f1c504436d57d099eb1}{eina\+\_\+log\+\_\+main\+\_\+thread\+\_\+check} (void) \hyperlink{group__Eina__Types__Group_ga04f4a207fcde054c818bace8af77dcd6}{E\+I\+N\+A\+\_\+\+C\+O\+N\+S\+T} \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\begin{DoxyCompactList}\small\item\em Checks if current thread is the main thread. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga4da16869de2aa4aacbefe403c5023ec2}{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+set} (\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} disabled)
\begin{DoxyCompactList}\small\item\em Enable or disable colored text in the logs. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Log__Group_gae49c947e0b48d26a5662de6c50ef9b6d}{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get} (void) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\begin{DoxyCompactList}\small\item\em Determine if color logging is enabled or disabled. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga02aa56a48250b5ebd4770f0d8e2b1236}{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+set} (\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} disabled)
\begin{DoxyCompactList}\small\item\em Set if originating file name logging should be disabled. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Log__Group_gad395079cbae5837f5a9032e7ee0d0c61}{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+get} (void) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\begin{DoxyCompactList}\small\item\em Get if originating file name logging should be disabled. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_gadb6bfb1070dc360d22d828b98cdae31c}{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+set} (\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} disabled)
\begin{DoxyCompactList}\small\item\em Set if originating function name logging should be disabled. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Log__Group_ga2a33ec4a010f84c00fe6aa0c608bcec2}{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+get} (void) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\begin{DoxyCompactList}\small\item\em Get if originating function name logging should be disabled. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_gaf97260917c1684b899038161d4d50f18}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set} (\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} abort\+\_\+on\+\_\+critical)
\begin{DoxyCompactList}\small\item\em Set if critical messages should abort the program. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Log__Group_ga28e1d20c961bdaf5f28252f2b25019e4}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get} (void) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\begin{DoxyCompactList}\small\item\em Get if critical messages should abort the program. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_gabaddfc5c340fe0faeb233787bc809547}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set} (int critical\+\_\+level)
\begin{DoxyCompactList}\small\item\em Set level that triggers abort if abort-\/on-\/critical is set. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__Log__Group_gaa64e72e63b215b4ff146d0e5381c2212}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get} (void) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\begin{DoxyCompactList}\small\item\em Get level that triggers abort if abort-\/on-\/critical is set. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga1a33cac53a9e3af21bd06d4e5bee3fe2}{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set} (const char $\ast$domain\+\_\+name, int level) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1)
\begin{DoxyCompactList}\small\item\em Set the domain level given its name. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__Log__Group_gaf640116085a7c5245be71ae5e42ba4ca}{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get} (const char $\ast$domain\+\_\+name) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1)
\begin{DoxyCompactList}\small\item\em Get the domain level given its name. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__Log__Group_ga2376f58bf4035235d4b208145dbbe783}{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+get} (int domain) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\begin{DoxyCompactList}\small\item\em Get the domain level given its identifier. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga77efcf44aaed8e968c36f4c92f0d6da4}{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+set} (int domain, int level)
\begin{DoxyCompactList}\small\item\em Set the domain level given its identifier. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_gaca5019f970a269e25e956a73de60fe4d}{static \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} {\bfseries eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+check} (int domain, int level)}\label{group__Eina__Log__Group_gaca5019f970a269e25e956a73de60fe4d}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__Log__Group_ga180f23bcbefbc0588f2f0c7a95bc0319}{eina\+\_\+log\+\_\+domain\+\_\+register} (const char $\ast$name, const char $\ast$color) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1)
\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga5646cbbdd46053c1f45bcab974f94ee6}{eina\+\_\+log\+\_\+domain\+\_\+unregister} (int domain)
\begin{DoxyCompactList}\small\item\em Forget about a logging domain registered by \hyperlink{group__Eina__Log__Group_ga180f23bcbefbc0588f2f0c7a95bc0319}{eina\+\_\+log\+\_\+domain\+\_\+register()} \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print} (int domain, \hyperlink{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{Eina\+\_\+\+Log\+\_\+\+Level} level, const char $\ast$file, const char $\ast$function, int line, const char $\ast$fmt,...) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(3
\begin{DoxyCompactList}\small\item\em Print out log message using given domain and level. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga383c0a4335bc07d00d6089ce32908d89}{\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void {\bfseries E\+I\+N\+A\+\_\+\+P\+R\+I\+N\+T\+F} (6, 7) \hyperlink{group__Eina__Types__Group_ga6eb1a3925291d82fe83a1bf842890d5b}{E\+I\+N\+A\+\_\+\+N\+O\+I\+N\+S\+T\+R\+U\+M\+E\+N\+T}}\label{group__Eina__Log__Group_ga383c0a4335bc07d00d6089ce32908d89}

\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_gad62f93f8813f8a218e52d8b612b96927}{eina\+\_\+log\+\_\+vprint} (int domain, \hyperlink{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{Eina\+\_\+\+Log\+\_\+\+Level} level, const char $\ast$file, const char $\ast$fnc, int line, const char $\ast$fmt, va\+\_\+list args) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(3
\begin{DoxyCompactList}\small\item\em Print out log message using given domain and level. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga0b8dd45c1e30d6476d214fdec1f9c6ef}{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stdout} (const \hyperlink{group__Eina__Log__Group_ga3e8bc7f3b9aa9140d1e5b91baf08ebe8}{Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$d, \hyperlink{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{Eina\+\_\+\+Log\+\_\+\+Level} level, const char $\ast$file, const char $\ast$fnc, int line, const char $\ast$fmt, void $\ast$data, va\+\_\+list args)
\begin{DoxyCompactList}\small\item\em Alternative logging method, this will output to standard output stream. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga7598762173540b34ec2d28af0888a79e}{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr} (const \hyperlink{group__Eina__Log__Group_ga3e8bc7f3b9aa9140d1e5b91baf08ebe8}{Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$d, \hyperlink{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{Eina\+\_\+\+Log\+\_\+\+Level} level, const char $\ast$file, const char $\ast$fnc, int line, const char $\ast$fmt, void $\ast$data, va\+\_\+list args)
\begin{DoxyCompactList}\small\item\em Default logging method, this will output to standard error stream. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga6c9add18bdc70615d0f9f77cf4f051dc}{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+file} (const \hyperlink{group__Eina__Log__Group_ga3e8bc7f3b9aa9140d1e5b91baf08ebe8}{Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$d, \hyperlink{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{Eina\+\_\+\+Log\+\_\+\+Level} level, const char $\ast$file, const char $\ast$fnc, int line, const char $\ast$fmt, void $\ast$data, va\+\_\+list args)
\begin{DoxyCompactList}\small\item\em Alternative logging method, this will output to given file stream. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga3f738cb0b3cc42b390bea0091598f792}{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+journald} (const \hyperlink{group__Eina__Log__Group_ga3e8bc7f3b9aa9140d1e5b91baf08ebe8}{Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$d, \hyperlink{group__Eina__Log__Group_ga5c0cd3a8463b76bb855805b70f58c7dd}{Eina\+\_\+\+Log\+\_\+\+Level} level, const char $\ast$file, const char $\ast$fnc, int line, const char $\ast$fmt, void $\ast$data, va\+\_\+list args)
\begin{DoxyCompactList}\small\item\em Alternative logging method, this will output to systemd journal. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_ga8d62710854f95b1685da55e382ee4ce3}{eina\+\_\+log\+\_\+console\+\_\+color\+\_\+set} (F\+I\+L\+E $\ast$fp, const char $\ast$color) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1
\begin{DoxyCompactList}\small\item\em Configure console color of given file. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Log__Group_gae4c6830a0e5fccbfcbbc55163d98ef23}{eina\+\_\+log\+\_\+timing} (int domain, \hyperlink{group__Eina__Log__Group_gadfcd7fc51aaa188de388a7f4c6164d83}{Eina\+\_\+\+Log\+\_\+\+State} state, const char $\ast$phase) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1
\begin{DoxyCompactList}\small\item\em Start or stop the timing of a phase. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Eina__Log__Group_gaf22afd672720858d1df3a8c6a2abe21a}{\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__Log__Group_gaf22afd672720858d1df3a8c6a2abe21a}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+G\+L\+O\+B\+A\+L}}\label{group__Eina__Log__Group_gaf22afd672720858d1df3a8c6a2abe21a}

\begin{DoxyCompactList}\small\item\em E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+G\+L\+O\+B\+A\+L is the general purpose log domain to be used, it is always registered and available everywhere. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_ga47f724c3a9f700d57d20d964d85a7a98}{\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void {\bfseries E\+I\+N\+A\+\_\+\+N\+O\+I\+N\+S\+T\+R\+U\+M\+E\+N\+T}}\label{group__Eina__Log__Group_ga47f724c3a9f700d57d20d964d85a7a98}

\item 
\hypertarget{group__Eina__Log__Group_gac6cb4966743a888defdb33610b4235aa}{\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} const char $\ast$ \hyperlink{group__Eina__Log__Group_gac6cb4966743a888defdb33610b4235aa}{\+\_\+eina\+\_\+log\+\_\+state\+\_\+init}}\label{group__Eina__Log__Group_gac6cb4966743a888defdb33610b4235aa}

\begin{DoxyCompactList}\small\item\em String that indicates the log system is initializing. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Log__Group_gabac7f0e5825da708e73faa9123f41fc6}{\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} const char $\ast$ \hyperlink{group__Eina__Log__Group_gabac7f0e5825da708e73faa9123f41fc6}{\+\_\+eina\+\_\+log\+\_\+state\+\_\+shutdown}}\label{group__Eina__Log__Group_gabac7f0e5825da708e73faa9123f41fc6}

\begin{DoxyCompactList}\small\item\em String that indicates the log system is shutting down. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Full-\/featured logging system. 

Eina provides \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()}, a standard function to manage all logging messages. This function may be called directly or using the helper macros such as \hyperlink{group__Eina__Log__Group_ga09b88349373c2158f988d72375af5849}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+B\+G()}, \hyperlink{group__Eina__Log__Group_ga2e33caeeeb6051526c01b7fea4d6c91b}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+E\+R\+R()} or those that take a specific domain as argument \hyperlink{group__Eina__Log__Group_ga4423c9d7bdc95555cf045b66e21e1f5c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+D\+B\+G()}, \hyperlink{group__Eina__Log__Group_ga698d954a5fc2d120a553277361d68047}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+E\+R\+R()}. Internally, \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()} will call the function defined with \hyperlink{group__Eina__Log__Group_ga50184735e08f530d4139c28fcdb02fbb}{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+set()}, that defaults to \hyperlink{group__Eina__Log__Group_ga7598762173540b34ec2d28af0888a79e}{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr()}, but may be changed to do whatever you need, such as networking or syslog logging.

The logging system is thread safe once initialized with \hyperlink{group__Eina__Log__Group_ga3b838bcdf99ef996704261ac4c48820b}{eina\+\_\+log\+\_\+threads\+\_\+enable()}. The thread that calls this function first is considered \char`\"{}main thread\char`\"{} and other threads will have their thread id (pthread\+\_\+self()) printed in the log message so it is easy to detect from where it is coming.

Log domains is the Eina way to differentiate messages. There might be different domains to represent different modules, different feature-\/set, different categories and so on. Filtering can be applied to domain names by means of {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S} environment variable or \hyperlink{group__Eina__Log__Group_ga1a33cac53a9e3af21bd06d4e5bee3fe2}{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set()}.

The different logging levels serve to customize the amount of debugging one want to take and may be used to automatically call abort() once some given level message is printed. This is controlled by environment variable {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+A\+B\+O\+R\+T} and the level to be considered critical with {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+A\+B\+O\+R\+T\+\_\+\+L\+E\+V\+E\+L}. These can be changed with \hyperlink{group__Eina__Log__Group_gaf97260917c1684b899038161d4d50f18}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set()} and \hyperlink{group__Eina__Log__Group_gabaddfc5c340fe0faeb233787bc809547}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set()}.

The default maximum level to print is defined by environment variable {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L}, but may be set per-\/domain with {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S}. It will default to \hyperlink{group__Eina__Log__Group_ga2e33caeeeb6051526c01b7fea4d6c91b}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+E\+R\+R}. This can be changed with \hyperlink{group__Eina__Log__Group_ga018457ec82c2e428600d1023d4b92749}{eina\+\_\+log\+\_\+level\+\_\+set()}.

To use the log system Eina must be initialized with \hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\+\_\+init()} and later shut down with \hyperlink{group__Eina__Main__Group_ga6741fcaba116e31e96ce14dcfa03f568}{eina\+\_\+shutdown()}. Here is a straightforward example\+:


\begin{DoxyCodeInclude}
\textcolor{comment}{//Compile with:}
\textcolor{comment}{//gcc -Wall -o eina\_log\_01 eina\_log\_01.c `pkg-config --cflags --libs eina`}

\textcolor{preprocessor}{#include <stdlib.h>}
\textcolor{preprocessor}{#include <stdio.h>}

\textcolor{preprocessor}{#include <\hyperlink{Eina_8h}{Eina.h}>}

\textcolor{keywordtype}{void} test\_warn(\textcolor{keywordtype}{void})
\{
   \hyperlink{group__Eina__Log__Group_ga21c44f66537533db16ee8f475ae2ae70}{EINA\_LOG\_WARN}(\textcolor{stringliteral}{"Here is a warning message"});
\}

\textcolor{keywordtype}{int} main(\textcolor{keywordtype}{void})
\{
   \textcolor{keywordflow}{if} (!\hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\_init}())
     \{
        printf(\textcolor{stringliteral}{"log during the initialization of Eina\_Log module\(\backslash\)n"});
        \textcolor{keywordflow}{return} EXIT\_FAILURE;
     \}

   test\_warn();

   \hyperlink{group__Eina__Main__Group_ga6741fcaba116e31e96ce14dcfa03f568}{eina\_shutdown}();

   \textcolor{keywordflow}{return} EXIT\_SUCCESS;
\}
\end{DoxyCodeInclude}


Compile this code with the following command\+:

\begin{DoxyVerb}gcc -Wall -o eina_log_01 eina_log_01.c `pkg-config --cflags --libs eina`\end{DoxyVerb}


Now execute the program with\+:

\begin{DoxyVerb}EINA_LOG_LEVEL=2 ./eina_log_01\end{DoxyVerb}


You should see a message displayed in the terminal.

For more information, you can look at the \hyperlink{tutorial_log_page}{Log Tutorial}. 

\subsection{Macro Definition Documentation}
\hypertarget{group__Eina__Log__Group_ga41d6e3b51ce5f50ef403428776a02626}{\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T}}
\index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T}!Log@{Log}}
\subsubsection[{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+D\+E\+F\+A\+U\+L\+T~{\bf E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+G\+L\+O\+B\+A\+L}}}\label{group__Eina__Log__Group_ga41d6e3b51ce5f50ef403428776a02626}


This macro defines the domain to use with the macros \hyperlink{group__Eina__Log__Group_ga4423c9d7bdc95555cf045b66e21e1f5c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+D\+B\+G()}, \hyperlink{group__Eina__Log__Group_ga782f84a4805166d2707cb4d59217c64e}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+I\+N\+F\+O()}, \hyperlink{group__Eina__Log__Group_ga5073ce1fbcc1f6ea8d0670aac2ecce70}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+W\+A\+R\+N()}, \hyperlink{group__Eina__Log__Group_ga698d954a5fc2d120a553277361d68047}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+E\+R\+R()} and \hyperlink{group__Eina__Log__Group_ga50e2b86707c08c89e49759cb31b7b91c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+C\+R\+I\+T()}. 

If not defined prior to the inclusion of this header, then it defaults to \hyperlink{group__Eina__Log__Group_gaf22afd672720858d1df3a8c6a2abe21a}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+G\+L\+O\+B\+A\+L}.

\begin{DoxyNote}{Note}
One may like to redefine this in its code to avoid typing too much. In this case the recommended way is\+:
\end{DoxyNote}

\begin{DoxyCode}
1 #include <Eina.h>
2 #undef EINA\_LOG\_DOMAIN\_DEFAULT
3 #define EINA\_LOG\_DOMAIN\_DEFAULT \_log\_dom
4 static int \_log\_dom = -1;
5 
6 int main(void)
7 \{
8    eina\_init();
9    \_log\_dom = eina\_log\_domain\_register("mydom", EINA\_COLOR\_CYAN);
10    EINA\_LOG\_ERR("using my own domain");
11    return 0;
12 \}
\end{DoxyCode}


\begin{DoxyWarning}{Warning}
If one defines the domain prior to inclusion of this header, the defined log domain symbol must be defined prior as well, otherwise the inlined functions defined by Eina will fail to find the symbol, causing build failure.
\end{DoxyWarning}

\begin{DoxyCode}
1 #define EINA\_LOG\_DOMAIN\_DEFAULT \_log\_dom
2 static int \_log\_dom = -1; // must come before inclusion of Eina.h!
3 #include <Eina.h>
4 
5 int main(void)
6 \{
7    eina\_init();
8    \_log\_dom = eina\_log\_domain\_register("mydom", EINA\_COLOR\_CYAN);
9    EINA\_LOG\_ERR("using my own domain");
10    return 0;
11 \}
\end{DoxyCode}
 \hypertarget{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G@{E\+I\+N\+A\+\_\+\+L\+O\+G}}
\index{E\+I\+N\+A\+\_\+\+L\+O\+G@{E\+I\+N\+A\+\_\+\+L\+O\+G}!Log@{Log}}
\subsubsection[{E\+I\+N\+A\+\_\+\+L\+O\+G}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\+I\+N\+A\+\_\+\+L\+O\+G(
\begin{DoxyParamCaption}
\item[{}]{D\+O\+M, }
\item[{}]{L\+E\+V\+E\+L, }
\item[{}]{fmt, }
\item[{}]{...}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}
{\bfseries Value\+:}
\begin{DoxyCode}
\hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\_log\_print}(DOM,                   \(\backslash\)
                 LEVEL,                 \(\backslash\)
                 \_\_FILE\_\_,              \(\backslash\)
                 \_\_FUNCTION\_\_,          \(\backslash\)
                 \_\_LINE\_\_,              \(\backslash\)
                 fmt,                   \(\backslash\)
                 ## \_\_VA\_ARGS\_\_)
\end{DoxyCode}


Logs a message on the specified domain, level and format. 

\begin{DoxyNote}{Note}
if {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+M\+A\+X\+I\+M\+U\+M} is defined, then messages larger than this value will be ignored regardless of current domain level, the \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()} is not even called! Most compilers will just detect the two integers make the branch impossible and remove the branch and function call all together. Take this as optimization tip and possible remove debug messages from binaries to be deployed, saving on hot paths. Never define {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+M\+A\+X\+I\+M\+U\+M} on public header files. 
\end{DoxyNote}
\hypertarget{group__Eina__Log__Group_ga5b50827f35399f9ff87f5d9d817c764a}{\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T}}
\index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T}!Log@{Log}}
\subsubsection[{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T(
\begin{DoxyParamCaption}
\item[{}]{fmt, }
\item[{}]{...}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga5b50827f35399f9ff87f5d9d817c764a}
{\bfseries Value\+:}
\begin{DoxyCode}
\hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{EINA\_LOG}(\hyperlink{group__Eina__Log__Group_ga41d6e3b51ce5f50ef403428776a02626}{EINA\_LOG\_DOMAIN\_DEFAULT}, \(\backslash\)
           \hyperlink{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa620ee82716c2c262ad2929823cf24ebd}{EINA\_LOG\_LEVEL\_CRITICAL}, \(\backslash\)
           fmt,                     \(\backslash\)
           ## \_\_VA\_ARGS\_\_)
\end{DoxyCode}


Logs a message with level C\+R\+I\+T\+I\+C\+A\+L on the default domain with the specified format. 



Referenced by emotion\+\_\+init().



\subsection{Enumeration Type Documentation}
\hypertarget{group__Eina__Log__Group_ga326699509b2e7578ace7c0a15b4a8c1a}{\index{Log@{Log}!\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Level@{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Level}}
\index{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Level@{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Level}!Log@{Log}}
\subsubsection[{\+\_\+\+Eina\+\_\+\+Log\+\_\+\+Level}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Level}}}\label{group__Eina__Log__Group_ga326699509b2e7578ace7c0a15b4a8c1a}


List of available logging levels. 

\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+C\+R\+I\+T\+I\+C\+A\+L@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+C\+R\+I\+T\+I\+C\+A\+L}!Log@{Log}}\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+C\+R\+I\+T\+I\+C\+A\+L@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+C\+R\+I\+T\+I\+C\+A\+L}}\item[{\em 
\hypertarget{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa620ee82716c2c262ad2929823cf24ebd}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+C\+R\+I\+T\+I\+C\+A\+L}\label{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa620ee82716c2c262ad2929823cf24ebd}
}]Critical log level. \index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R}!Log@{Log}}\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R}}\item[{\em 
\hypertarget{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa8252243003214c2e38a3b228fc85eb80}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R}\label{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa8252243003214c2e38a3b228fc85eb80}
}]Error log level. \index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N}!Log@{Log}}\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N}}\item[{\em 
\hypertarget{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aae6fda047b87c6d22a23cbb7143dd2fe8}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N}\label{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aae6fda047b87c6d22a23cbb7143dd2fe8}
}]Warning log level. \index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+F\+O@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+F\+O}!Log@{Log}}\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+F\+O@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+F\+O}}\item[{\em 
\hypertarget{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa0368139789af856a6ad9bbe4f21d195f}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+F\+O}\label{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa0368139789af856a6ad9bbe4f21d195f}
}]Information log level. \index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+B\+G@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+B\+G}!Log@{Log}}\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+B\+G@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+B\+G}}\item[{\em 
\hypertarget{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aafdc5a5cfb78f5e4d5851447ed798af50}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+B\+G}\label{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aafdc5a5cfb78f5e4d5851447ed798af50}
}]Debug log level. \index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S}!Log@{Log}}\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S}}\item[{\em 
\hypertarget{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa880f2906e9b871ce8f590316d2f60652}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S}\label{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aa880f2906e9b871ce8f590316d2f60652}
}]Count of default log levels. \index{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N}!Log@{Log}}\index{Log@{Log}!E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N@{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N}}\item[{\em 
\hypertarget{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aaa3ab2a3e3ae9d08a60e939d56198bb96}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N}\label{group__Eina__Log__Group_gga326699509b2e7578ace7c0a15b4a8c1aaa3ab2a3e3ae9d08a60e939d56198bb96}
}]Unknown level. \end{description}
\end{Desc}


\subsection{Function Documentation}
\hypertarget{group__Eina__Log__Group_ga3b838bcdf99ef996704261ac4c48820b}{\index{Log@{Log}!eina\+\_\+log\+\_\+threads\+\_\+enable@{eina\+\_\+log\+\_\+threads\+\_\+enable}}
\index{eina\+\_\+log\+\_\+threads\+\_\+enable@{eina\+\_\+log\+\_\+threads\+\_\+enable}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+threads\+\_\+enable}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+threads\+\_\+enable (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga3b838bcdf99ef996704261ac4c48820b}


Enable logging module to handle threads. 

There is no disable option on purpose, if it is enabled, there is no way back until you call the last \hyperlink{group__Eina__Main__Group_ga6741fcaba116e31e96ce14dcfa03f568}{eina\+\_\+shutdown()}.

There is no function to retrieve if threads are enabled as one is not supposed to know this from outside.

After this call is executed at least once, if Eina was compiled with threads support then logging will lock around debug messages and threads that are not the main thread will have its identifier printed.

The main thread is considered the thread where the first \hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\+\_\+init()} was called. 

References E\+I\+N\+A\+\_\+\+T\+R\+U\+E.

\hypertarget{group__Eina__Log__Group_ga50184735e08f530d4139c28fcdb02fbb}{\index{Log@{Log}!eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+set@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+set}}
\index{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+set@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Log\+\_\+\+Print\+\_\+\+Cb}}]{cb, }
\item[{void $\ast$}]{data}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga50184735e08f530d4139c28fcdb02fbb}


Sets logging method to use. 


\begin{DoxyParams}{Parameters}
{\em cb} & The callback to call when printing a log. \\
\hline
{\em data} & The data to pass to the callback.\\
\hline
\end{DoxyParams}
By default, \hyperlink{group__Eina__Log__Group_ga7598762173540b34ec2d28af0888a79e}{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr()} is used.

\begin{DoxyNote}{Note}
M\+T\+: safe to call from any thread.

M\+T\+: given function {\itshape cb} will be called protected by mutex. This means you're safe from other calls but you should never call \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()}, directly or indirectly. 
\end{DoxyNote}
\hypertarget{group__Eina__Log__Group_ga018457ec82c2e428600d1023d4b92749}{\index{Log@{Log}!eina\+\_\+log\+\_\+level\+\_\+set@{eina\+\_\+log\+\_\+level\+\_\+set}}
\index{eina\+\_\+log\+\_\+level\+\_\+set@{eina\+\_\+log\+\_\+level\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+level\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+level\+\_\+set (
\begin{DoxyParamCaption}
\item[{int}]{level}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga018457ec82c2e428600d1023d4b92749}


Set the default log level. 


\begin{DoxyParams}{Parameters}
{\em level} & The log level.\\
\hline
\end{DoxyParams}
This function sets the log level {\ttfamily level}. It is used in \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()}.

\begin{DoxyNote}{Note}
this is initially set to envvar E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L by \hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\+\_\+init()}.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_gaf825e9e4c1efa7c2b4155e3863b06408}{eina\+\_\+log\+\_\+level\+\_\+get()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+L\+Y, E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+G\+L\+O\+B\+A\+L, and \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain\+::level.



Referenced by ecore\+\_\+drm\+\_\+init().

\hypertarget{group__Eina__Log__Group_gaf825e9e4c1efa7c2b4155e3863b06408}{\index{Log@{Log}!eina\+\_\+log\+\_\+level\+\_\+get@{eina\+\_\+log\+\_\+level\+\_\+get}}
\index{eina\+\_\+log\+\_\+level\+\_\+get@{eina\+\_\+log\+\_\+level\+\_\+get}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+level\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int eina\+\_\+log\+\_\+level\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gaf825e9e4c1efa7c2b4155e3863b06408}


Get the default log level. 

\begin{DoxyReturn}{Returns}
the log level that limits \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()}.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_ga018457ec82c2e428600d1023d4b92749}{eina\+\_\+log\+\_\+level\+\_\+set()} 
\end{DoxySeeAlso}
\hypertarget{group__Eina__Log__Group_ga6506707f51c09f5876cf8b4cf47e7e26}{\index{Log@{Log}!eina\+\_\+log\+\_\+level\+\_\+check@{eina\+\_\+log\+\_\+level\+\_\+check}}
\index{eina\+\_\+log\+\_\+level\+\_\+check@{eina\+\_\+log\+\_\+level\+\_\+check}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+level\+\_\+check}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\+\_\+\+Bool} eina\+\_\+log\+\_\+level\+\_\+check (
\begin{DoxyParamCaption}
\item[{int}]{level}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{group__Eina__Log__Group_ga6506707f51c09f5876cf8b4cf47e7e26}


Determine if a given {\ttfamily level} should be logged. 

\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if the {\ttfamily level} should be logged, else \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E}.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_ga018457ec82c2e428600d1023d4b92749}{eina\+\_\+log\+\_\+level\+\_\+set()} 
\end{DoxySeeAlso}
\hypertarget{group__Eina__Log__Group_ga3441a26eba4e2f1c504436d57d099eb1}{\index{Log@{Log}!eina\+\_\+log\+\_\+main\+\_\+thread\+\_\+check@{eina\+\_\+log\+\_\+main\+\_\+thread\+\_\+check}}
\index{eina\+\_\+log\+\_\+main\+\_\+thread\+\_\+check@{eina\+\_\+log\+\_\+main\+\_\+thread\+\_\+check}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+main\+\_\+thread\+\_\+check}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+log\+\_\+main\+\_\+thread\+\_\+check (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga3441a26eba4e2f1c504436d57d099eb1}


Checks if current thread is the main thread. 

If there is no thread support (compiled with --disable-\/pthreads) or threads were not enabled, then \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} is returned. The only case where \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} is returned is when threads were successfully enabled but the current thread is not the one that called eina\+\_\+log\+\_\+threads\+\_\+init() (the manin thread).

\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if the current thread is the one that called eina\+\_\+log\+\_\+threads\+\_\+init(), otherwise \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E}. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+T\+R\+U\+E.

\hypertarget{group__Eina__Log__Group_ga4da16869de2aa4aacbefe403c5023ec2}{\index{Log@{Log}!eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+set@{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+set}}
\index{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+set@{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Bool}}]{disabled}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga4da16869de2aa4aacbefe403c5023ec2}


Enable or disable colored text in the logs. 


\begin{DoxyParams}{Parameters}
{\em disabled} & If \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, color logging should be disabled.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
this is initially set to envvar E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+O\+L\+O\+R\+\_\+\+D\+I\+S\+A\+B\+L\+E by \hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\+\_\+init()}.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_gae49c947e0b48d26a5662de6c50ef9b6d}{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get()} 
\end{DoxySeeAlso}


References \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain\+::color, \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain\+::domain\+\_\+str, and \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain\+::name.

\hypertarget{group__Eina__Log__Group_gae49c947e0b48d26a5662de6c50ef9b6d}{\index{Log@{Log}!eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get@{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get}}
\index{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get@{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gae49c947e0b48d26a5662de6c50ef9b6d}


Determine if color logging is enabled or disabled. 

\begin{DoxyReturn}{Returns}
If \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, color logging is disabled.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_ga4da16869de2aa4aacbefe403c5023ec2}{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+set()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+T\+R\+U\+E.

\hypertarget{group__Eina__Log__Group_ga02aa56a48250b5ebd4770f0d8e2b1236}{\index{Log@{Log}!eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+set@{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+set}}
\index{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+set@{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Bool}}]{disabled}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga02aa56a48250b5ebd4770f0d8e2b1236}


Set if originating file name logging should be disabled. 


\begin{DoxyParams}{Parameters}
{\em disabled} & if \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, file name logging should be disabled.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
this is initially set to envvar E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+S\+A\+B\+L\+E by \hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\+\_\+init()}.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_gad395079cbae5837f5a9032e7ee0d0c61}{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+get()} 
\end{DoxySeeAlso}
\hypertarget{group__Eina__Log__Group_gad395079cbae5837f5a9032e7ee0d0c61}{\index{Log@{Log}!eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+get@{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+get}}
\index{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+get@{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+get}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gad395079cbae5837f5a9032e7ee0d0c61}


Get if originating file name logging should be disabled. 

\begin{DoxyReturn}{Returns}
if \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, file name logging should be disabled.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_ga02aa56a48250b5ebd4770f0d8e2b1236}{eina\+\_\+log\+\_\+file\+\_\+disable\+\_\+set()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+T\+R\+U\+E.

\hypertarget{group__Eina__Log__Group_gadb6bfb1070dc360d22d828b98cdae31c}{\index{Log@{Log}!eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+set@{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+set}}
\index{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+set@{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Bool}}]{disabled}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gadb6bfb1070dc360d22d828b98cdae31c}


Set if originating function name logging should be disabled. 


\begin{DoxyParams}{Parameters}
{\em disabled} & if \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, function name logging should be disabled.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
this is initially set to envvar E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+D\+I\+S\+A\+B\+L\+E by \hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\+\_\+init()}.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_ga2a33ec4a010f84c00fe6aa0c608bcec2}{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+get()} 
\end{DoxySeeAlso}
\hypertarget{group__Eina__Log__Group_ga2a33ec4a010f84c00fe6aa0c608bcec2}{\index{Log@{Log}!eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+get@{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+get}}
\index{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+get@{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+get}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga2a33ec4a010f84c00fe6aa0c608bcec2}


Get if originating function name logging should be disabled. 

\begin{DoxyReturn}{Returns}
if \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, function name logging should be disabled.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_gadb6bfb1070dc360d22d828b98cdae31c}{eina\+\_\+log\+\_\+function\+\_\+disable\+\_\+set()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+T\+R\+U\+E.

\hypertarget{group__Eina__Log__Group_gaf97260917c1684b899038161d4d50f18}{\index{Log@{Log}!eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set@{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set}}
\index{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set@{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Bool}}]{abort\+\_\+on\+\_\+critical}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gaf97260917c1684b899038161d4d50f18}


Set if critical messages should abort the program. 


\begin{DoxyParams}{Parameters}
{\em abort\+\_\+on\+\_\+critical} & if \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, messages with level equal or smaller than \hyperlink{group__Eina__Log__Group_gaa64e72e63b215b4ff146d0e5381c2212}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get()} will abort the program.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
this is initially set to envvar E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+A\+B\+O\+R\+T by \hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\+\_\+init()}.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_ga28e1d20c961bdaf5f28252f2b25019e4}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get()} 

\hyperlink{group__Eina__Log__Group_gabaddfc5c340fe0faeb233787bc809547}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set()} 
\end{DoxySeeAlso}
\hypertarget{group__Eina__Log__Group_ga28e1d20c961bdaf5f28252f2b25019e4}{\index{Log@{Log}!eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get@{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get}}
\index{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get@{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga28e1d20c961bdaf5f28252f2b25019e4}


Get if critical messages should abort the program. 

\begin{DoxyReturn}{Returns}
if \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}, any messages with level equal or smaller than \hyperlink{group__Eina__Log__Group_gaa64e72e63b215b4ff146d0e5381c2212}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get()} will abort the program.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_gaf97260917c1684b899038161d4d50f18}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+set()} 

\hyperlink{group__Eina__Log__Group_gabaddfc5c340fe0faeb233787bc809547}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E.

\hypertarget{group__Eina__Log__Group_gabaddfc5c340fe0faeb233787bc809547}{\index{Log@{Log}!eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set@{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set}}
\index{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set@{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set (
\begin{DoxyParamCaption}
\item[{int}]{critical\+\_\+level}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gabaddfc5c340fe0faeb233787bc809547}


Set level that triggers abort if abort-\/on-\/critical is set. 


\begin{DoxyParams}{Parameters}
{\em critical\+\_\+level} & levels equal or smaller than the given value will trigger program abortion if \hyperlink{group__Eina__Log__Group_ga28e1d20c961bdaf5f28252f2b25019e4}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get()} returns \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
this is initially set to envvar E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+A\+B\+O\+R\+T\+\_\+\+L\+E\+V\+E\+L by \hyperlink{group__Eina__Main__Group_gabf448ada5bc81a07342b66c6f818ee5e}{eina\+\_\+init()}.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_gaa64e72e63b215b4ff146d0e5381c2212}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get()} 

\hyperlink{group__Eina__Log__Group_ga28e1d20c961bdaf5f28252f2b25019e4}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get()} 
\end{DoxySeeAlso}
\hypertarget{group__Eina__Log__Group_gaa64e72e63b215b4ff146d0e5381c2212}{\index{Log@{Log}!eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get@{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get}}
\index{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get@{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gaa64e72e63b215b4ff146d0e5381c2212}


Get level that triggers abort if abort-\/on-\/critical is set. 

\begin{DoxyReturn}{Returns}
critical level equal or smaller than value will trigger program abortion if \hyperlink{group__Eina__Log__Group_ga28e1d20c961bdaf5f28252f2b25019e4}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get()} returns \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E}.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_gabaddfc5c340fe0faeb233787bc809547}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+level\+\_\+set()} 

\hyperlink{group__Eina__Log__Group_ga28e1d20c961bdaf5f28252f2b25019e4}{eina\+\_\+log\+\_\+abort\+\_\+on\+\_\+critical\+\_\+get()} 
\end{DoxySeeAlso}
\hypertarget{group__Eina__Log__Group_ga1a33cac53a9e3af21bd06d4e5bee3fe2}{\index{Log@{Log}!eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set@{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set}}
\index{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set@{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{domain\+\_\+name, }
\item[{int}]{level}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga1a33cac53a9e3af21bd06d4e5bee3fe2}


Set the domain level given its name. 

This call has the same effect as setting E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S=$<${\ttfamily domain\+\_\+name$>$}\+:$<${\ttfamily level$>$} 


\begin{DoxyParams}{Parameters}
{\em domain\+\_\+name} & domain name to change the level. It may be of a still not registered domain. If the domain is not registered yet, it will be saved as a pending set and applied upon registration. \\
\hline
{\em level} & level to use to limit \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()} for given domain. \\
\hline
\end{DoxyParams}


References eina\+\_\+inlist\+\_\+append(), E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+C\+H, E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+G\+E\+T, and \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain\+::level.



Referenced by ecore\+\_\+drm\+\_\+init().

\hypertarget{group__Eina__Log__Group_gaf640116085a7c5245be71ae5e42ba4ca}{\index{Log@{Log}!eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get@{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get}}
\index{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get@{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{domain\+\_\+name}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gaf640116085a7c5245be71ae5e42ba4ca}


Get the domain level given its name. 


\begin{DoxyParams}{Parameters}
{\em domain\+\_\+name} & domain name to retrieve the level. It may be of a still not registered domain. If the domain is not registered yet, but there is a pending value, either from \hyperlink{group__Eina__Log__Group_ga1a33cac53a9e3af21bd06d4e5bee3fe2}{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set()},E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S environment variable or from E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S\+\_\+\+G\+L\+O\+B, these are returned. If nothing else was found, then the global/default level (\hyperlink{group__Eina__Log__Group_gaf825e9e4c1efa7c2b4155e3863b06408}{eina\+\_\+log\+\_\+level\+\_\+get()}) is returned.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
level to use to limit \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()} for given domain. On error ({\ttfamily domain\+\_\+name} == N\+U\+L\+L), E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N is returned.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_ga1a33cac53a9e3af21bd06d4e5bee3fe2}{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+set()} 

\hyperlink{group__Eina__Log__Group_ga2376f58bf4035235d4b208145dbbe783}{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+get()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+I\+N\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+C\+H, E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N, and \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain\+::level.

\hypertarget{group__Eina__Log__Group_ga2376f58bf4035235d4b208145dbbe783}{\index{Log@{Log}!eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+get@{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+get}}
\index{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+get@{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+get}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+get (
\begin{DoxyParamCaption}
\item[{int}]{domain}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga2376f58bf4035235d4b208145dbbe783}


Get the domain level given its identifier. 


\begin{DoxyParams}{Parameters}
{\em domain} & identifier, so it must be previously registered with \hyperlink{group__Eina__Log__Group_ga180f23bcbefbc0588f2f0c7a95bc0319}{eina\+\_\+log\+\_\+domain\+\_\+register()}. It's a much faster version of \hyperlink{group__Eina__Log__Group_gaf640116085a7c5245be71ae5e42ba4ca}{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get()}, but relies on domain being present.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if level should be printed, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} if not. (domain's level is greater or equal {\itshape level}). 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+U\+N\+K\+N\+O\+W\+N, and \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain\+::level.



Referenced by efl\+::eina\+::\+\_\+domain\+\_\+base$<$ log\+\_\+domain $>$\+::get\+\_\+level().

\hypertarget{group__Eina__Log__Group_ga77efcf44aaed8e968c36f4c92f0d6da4}{\index{Log@{Log}!eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+set@{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+set}}
\index{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+set@{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+domain\+\_\+registered\+\_\+level\+\_\+set (
\begin{DoxyParamCaption}
\item[{int}]{domain, }
\item[{int}]{level}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga77efcf44aaed8e968c36f4c92f0d6da4}


Set the domain level given its identifier. 


\begin{DoxyParams}{Parameters}
{\em domain} & identifier, so it must be previously registered with \hyperlink{group__Eina__Log__Group_ga180f23bcbefbc0588f2f0c7a95bc0319}{eina\+\_\+log\+\_\+domain\+\_\+register()}. It's a much faster version of \hyperlink{group__Eina__Log__Group_gaf640116085a7c5245be71ae5e42ba4ca}{eina\+\_\+log\+\_\+domain\+\_\+level\+\_\+get()}, but relies on domain being present. \\
\hline
{\em level} & level to use to limit \hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()} for given domain. \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+10 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+Log\+\_\+\+Domain\+::level.



Referenced by efl\+::eina\+::\+\_\+domain\+\_\+base$<$ log\+\_\+domain $>$\+::set\+\_\+level().

\hypertarget{group__Eina__Log__Group_ga180f23bcbefbc0588f2f0c7a95bc0319}{\index{Log@{Log}!eina\+\_\+log\+\_\+domain\+\_\+register@{eina\+\_\+log\+\_\+domain\+\_\+register}}
\index{eina\+\_\+log\+\_\+domain\+\_\+register@{eina\+\_\+log\+\_\+domain\+\_\+register}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+domain\+\_\+register}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int eina\+\_\+log\+\_\+domain\+\_\+register (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{name, }
\item[{const char $\ast$}]{color}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga180f23bcbefbc0588f2f0c7a95bc0319}

\begin{DoxyParams}{Parameters}
{\em name} & Domain name \\
\hline
{\em color} & Color of the domain name\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Domain index that will be used as the D\+O\+M\+A\+I\+N parameter on log macros. A negative return value means an log occurred.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
M\+T\+: safe to call from any thread. 
\end{DoxyNote}


Referenced by ecore\+\_\+audio\+\_\+init(), ecore\+\_\+con\+\_\+init(), ecore\+\_\+drm\+\_\+init(), ecore\+\_\+evas\+\_\+init(), ecore\+\_\+event\+\_\+init(), ecore\+\_\+file\+\_\+init(), ecore\+\_\+imf\+\_\+init(), ecore\+\_\+init(), ecore\+\_\+ipc\+\_\+init(), ecore\+\_\+psl1ght\+\_\+init(), ecore\+\_\+sdl\+\_\+init(), ecore\+\_\+win32\+\_\+init(), ecore\+\_\+wl\+\_\+init(), ecore\+\_\+x\+\_\+init(), edje\+\_\+init(), eet\+\_\+init(), eeze\+\_\+init(), efreet\+\_\+mime\+\_\+init(), efreet\+\_\+trash\+\_\+init(), eina\+\_\+init(), eina\+\_\+mmap\+\_\+safety\+\_\+enabled\+\_\+set(), eio\+\_\+init(), eldbus\+\_\+init(), emotion\+\_\+init(), ethumb\+\_\+client\+\_\+init(), ethumb\+\_\+init(), and evas\+\_\+init().

\hypertarget{group__Eina__Log__Group_ga5646cbbdd46053c1f45bcab974f94ee6}{\index{Log@{Log}!eina\+\_\+log\+\_\+domain\+\_\+unregister@{eina\+\_\+log\+\_\+domain\+\_\+unregister}}
\index{eina\+\_\+log\+\_\+domain\+\_\+unregister@{eina\+\_\+log\+\_\+domain\+\_\+unregister}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+domain\+\_\+unregister}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+domain\+\_\+unregister (
\begin{DoxyParamCaption}
\item[{int}]{domain}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga5646cbbdd46053c1f45bcab974f94ee6}


Forget about a logging domain registered by \hyperlink{group__Eina__Log__Group_ga180f23bcbefbc0588f2f0c7a95bc0319}{eina\+\_\+log\+\_\+domain\+\_\+register()} 


\begin{DoxyParams}{Parameters}
{\em domain} & domain identifier as reported by \hyperlink{group__Eina__Log__Group_ga180f23bcbefbc0588f2f0c7a95bc0319}{eina\+\_\+log\+\_\+domain\+\_\+register()}, must be $>$= 0.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
M\+T\+: safe to call from any thread. 
\end{DoxyNote}


Referenced by ecore\+\_\+audio\+\_\+shutdown(), ecore\+\_\+con\+\_\+shutdown(), ecore\+\_\+drm\+\_\+init(), ecore\+\_\+drm\+\_\+shutdown(), ecore\+\_\+evas\+\_\+shutdown(), ecore\+\_\+event\+\_\+shutdown(), ecore\+\_\+file\+\_\+shutdown(), ecore\+\_\+imf\+\_\+shutdown(), ecore\+\_\+ipc\+\_\+shutdown(), ecore\+\_\+psl1ght\+\_\+init(), ecore\+\_\+psl1ght\+\_\+shutdown(), ecore\+\_\+sdl\+\_\+shutdown(), ecore\+\_\+shutdown(), ecore\+\_\+win32\+\_\+init(), ecore\+\_\+win32\+\_\+shutdown(), ecore\+\_\+wl\+\_\+init(), ecore\+\_\+x\+\_\+init(), edje\+\_\+init(), eet\+\_\+init(), eet\+\_\+shutdown(), eeze\+\_\+init(), eeze\+\_\+shutdown(), efreet\+\_\+mime\+\_\+init(), efreet\+\_\+mime\+\_\+shutdown(), efreet\+\_\+trash\+\_\+shutdown(), eio\+\_\+init(), eio\+\_\+shutdown(), eldbus\+\_\+init(), eldbus\+\_\+shutdown(), emotion\+\_\+init(), emotion\+\_\+shutdown(), ethumb\+\_\+client\+\_\+shutdown(), ethumb\+\_\+init(), ethumb\+\_\+shutdown(), evas\+\_\+init(), evas\+\_\+shutdown(), and efl\+::eina\+::log\+\_\+domain\+::$\sim$log\+\_\+domain().

\hypertarget{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{\index{Log@{Log}!eina\+\_\+log\+\_\+print@{eina\+\_\+log\+\_\+print}}
\index{eina\+\_\+log\+\_\+print@{eina\+\_\+log\+\_\+print}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+print}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+print (
\begin{DoxyParamCaption}
\item[{int}]{domain, }
\item[{{\bf Eina\+\_\+\+Log\+\_\+\+Level}}]{level, }
\item[{const char $\ast$}]{file, }
\item[{const char $\ast$}]{function, }
\item[{int}]{line, }
\item[{const char $\ast$}]{fmt, }
\item[{}]{...}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}


Print out log message using given domain and level. 

\begin{DoxyNote}{Note}
Usually you'll not use this function directly but the helper macros \hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G()}, \hyperlink{group__Eina__Log__Group_ga50e2b86707c08c89e49759cb31b7b91c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+C\+R\+I\+T()}, \hyperlink{group__Eina__Log__Group_ga5b50827f35399f9ff87f5d9d817c764a}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T()} and so on. See eina\+\_\+log.\+h
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em domain} & logging domain to use or {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+G\+L\+O\+B\+A\+L} if you registered none. It is recommended that modules and applications have their own logging domain. \\
\hline
{\em level} & message level, those with level greater than user specified value (\hyperlink{group__Eina__Log__Group_ga018457ec82c2e428600d1023d4b92749}{eina\+\_\+log\+\_\+level\+\_\+set()} or environment variables E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L, E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S) will be ignored. \\
\hline
{\em file} & filename that originated the call, must {\bfseries not} be {\ttfamily N\+U\+L\+L}. \\
\hline
{\em function} & function that originated the call, must {\bfseries not} be {\ttfamily N\+U\+L\+L}. \\
\hline
{\em line} & originating line in {\itshape file}. \\
\hline
{\em fmt} & printf-\/like format to use. Should not provide trailing '~\newline
' as it is automatically included. \\
\hline
{\em ...} & variadic args.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
M\+T\+: this function may be called from different threads if \hyperlink{group__Eina__Log__Group_ga3b838bcdf99ef996704261ac4c48820b}{eina\+\_\+log\+\_\+threads\+\_\+enable()} was called before. 
\end{DoxyNote}


Referenced by eina\+\_\+magic\+\_\+fail().

\hypertarget{group__Eina__Log__Group_gad62f93f8813f8a218e52d8b612b96927}{\index{Log@{Log}!eina\+\_\+log\+\_\+vprint@{eina\+\_\+log\+\_\+vprint}}
\index{eina\+\_\+log\+\_\+vprint@{eina\+\_\+log\+\_\+vprint}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+vprint}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+vprint (
\begin{DoxyParamCaption}
\item[{int}]{domain, }
\item[{{\bf Eina\+\_\+\+Log\+\_\+\+Level}}]{level, }
\item[{const char $\ast$}]{file, }
\item[{const char $\ast$}]{fnc, }
\item[{int}]{line, }
\item[{const char $\ast$}]{fmt, }
\item[{va\+\_\+list}]{args}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gad62f93f8813f8a218e52d8b612b96927}


Print out log message using given domain and level. 

\begin{DoxyNote}{Note}
Usually you'll not use this function directly but the helper macros \hyperlink{group__Eina__Log__Group_ga00e2a10370282673064d2bd3579b463c}{E\+I\+N\+A\+\_\+\+L\+O\+G()}, \hyperlink{group__Eina__Log__Group_ga50e2b86707c08c89e49759cb31b7b91c}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+\_\+\+C\+R\+I\+T()}, \hyperlink{group__Eina__Log__Group_ga5b50827f35399f9ff87f5d9d817c764a}{E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+R\+I\+T()} and so on. See eina\+\_\+log.\+h
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em domain} & logging domain to use or {\ttfamily E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+G\+L\+O\+B\+A\+L} if you registered none. It is recommended that modules and applications have their own logging domain. \\
\hline
{\em level} & message level, those with level greater than user specified value (\hyperlink{group__Eina__Log__Group_ga018457ec82c2e428600d1023d4b92749}{eina\+\_\+log\+\_\+level\+\_\+set()} or environment variables E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L, E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+S) will be ignored. \\
\hline
{\em file} & filename that originated the call, must {\bfseries not} be {\ttfamily N\+U\+L\+L}. \\
\hline
{\em fnc} & function that originated the call, must {\bfseries not} be {\ttfamily N\+U\+L\+L}. \\
\hline
{\em line} & originating line in {\itshape file}. \\
\hline
{\em fmt} & printf-\/like format to use. Should not provide trailing '~\newline
' as it is automatically included. \\
\hline
{\em args} & the arguments needed by the format.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
M\+T\+: this function may be called from different threads if \hyperlink{group__Eina__Log__Group_ga3b838bcdf99ef996704261ac4c48820b}{eina\+\_\+log\+\_\+threads\+\_\+enable()} was called before.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Log__Group_ga4cca81b7002645e5550283f687b903db}{eina\+\_\+log\+\_\+print()} 
\end{DoxySeeAlso}
\hypertarget{group__Eina__Log__Group_ga0b8dd45c1e30d6476d214fdec1f9c6ef}{\index{Log@{Log}!eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stdout@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stdout}}
\index{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stdout@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stdout}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stdout}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stdout (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$}]{d, }
\item[{{\bf Eina\+\_\+\+Log\+\_\+\+Level}}]{level, }
\item[{const char $\ast$}]{file, }
\item[{const char $\ast$}]{fnc, }
\item[{int}]{line, }
\item[{const char $\ast$}]{fmt, }
\item[{void $\ast$}]{data, }
\item[{va\+\_\+list}]{args}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga0b8dd45c1e30d6476d214fdec1f9c6ef}


Alternative logging method, this will output to standard output stream. 


\begin{DoxyParams}{Parameters}
{\em d} & The domain. \\
\hline
{\em level} & The level. \\
\hline
{\em file} & The file which is logged. \\
\hline
{\em fnc} & The function which is logged. \\
\hline
{\em line} & The line which is logged. \\
\hline
{\em fmt} & The ouptut format to use. \\
\hline
{\em data} & Not used. \\
\hline
{\em args} & The arguments needed by the format.\\
\hline
\end{DoxyParams}
This method will colorize output based on domain provided color and message logging level. To disable color, set environment variable E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+O\+L\+O\+R\+\_\+\+D\+I\+S\+A\+B\+L\+E=1. Similarly, to disable file and line information, set E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+S\+A\+B\+L\+E=1 or E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+D\+I\+S\+A\+B\+L\+E=1 to avoid function name in output. It is not acceptable to have both E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+S\+A\+B\+L\+E and E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+D\+I\+S\+A\+B\+L\+E at the same time, in this case just E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+D\+I\+S\+A\+B\+L\+E will be considered and file information will be printed anyways.

\begin{DoxyNote}{Note}
M\+T\+: if threads are enabled, this function is called within locks. 

M\+T\+: Threads different from main thread will have thread id appended to domain name. 
\end{DoxyNote}
\hypertarget{group__Eina__Log__Group_ga7598762173540b34ec2d28af0888a79e}{\index{Log@{Log}!eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr}}
\index{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+stderr (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$}]{d, }
\item[{{\bf Eina\+\_\+\+Log\+\_\+\+Level}}]{level, }
\item[{const char $\ast$}]{file, }
\item[{const char $\ast$}]{fnc, }
\item[{int}]{line, }
\item[{const char $\ast$}]{fmt, }
\item[{void $\ast$}]{data, }
\item[{va\+\_\+list}]{args}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga7598762173540b34ec2d28af0888a79e}


Default logging method, this will output to standard error stream. 


\begin{DoxyParams}{Parameters}
{\em d} & The domain. \\
\hline
{\em level} & The level. \\
\hline
{\em file} & The file which is logged. \\
\hline
{\em fnc} & The function which is logged. \\
\hline
{\em line} & The line which is logged. \\
\hline
{\em fmt} & The ouptut format to use. \\
\hline
{\em data} & Not used. \\
\hline
{\em args} & The arguments needed by the format.\\
\hline
\end{DoxyParams}
This method will colorize output based on domain provided color and message logging level.

To disable color, set environment variable E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+O\+L\+O\+R\+\_\+\+D\+I\+S\+A\+B\+L\+E=1. To enable color, even if directing to a file or when using a non-\/supported color terminal, use E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+O\+L\+O\+R\+\_\+\+D\+I\+S\+A\+B\+L\+E=0. If E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+C\+O\+L\+O\+R\+\_\+\+D\+I\+S\+A\+B\+L\+E is unset (or -\/1), then Eina will disable color if terminal (\$\+T\+E\+R\+M) is unsupported or if redirecting to a file.

. Similarly, to disable file and line information, set E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+S\+A\+B\+L\+E=1 or E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+D\+I\+S\+A\+B\+L\+E=1 to avoid function name in output. It is not acceptable to have both E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+I\+L\+E\+\_\+\+D\+I\+S\+A\+B\+L\+E and E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+D\+I\+S\+A\+B\+L\+E at the same time, in this case just E\+I\+N\+A\+\_\+\+L\+O\+G\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+D\+I\+S\+A\+B\+L\+E will be considered and file information will be printed anyways.

\begin{DoxyNote}{Note}
M\+T\+: if threads are enabled, this function is called within locks. 

M\+T\+: Threads different from main thread will have thread id appended to domain name. 
\end{DoxyNote}
\hypertarget{group__Eina__Log__Group_ga6c9add18bdc70615d0f9f77cf4f051dc}{\index{Log@{Log}!eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+file@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+file}}
\index{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+file@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+file}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+file}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+file (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$}]{d, }
\item[{{\bf Eina\+\_\+\+Log\+\_\+\+Level}}]{level, }
\item[{const char $\ast$}]{file, }
\item[{const char $\ast$}]{fnc, }
\item[{int}]{line, }
\item[{const char $\ast$}]{fmt, }
\item[{void $\ast$}]{data, }
\item[{va\+\_\+list}]{args}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga6c9add18bdc70615d0f9f77cf4f051dc}


Alternative logging method, this will output to given file stream. 


\begin{DoxyParams}{Parameters}
{\em d} & The domain. \\
\hline
{\em level} & Not used. \\
\hline
{\em file} & The file which is logged. \\
\hline
{\em fnc} & The function which is logged. \\
\hline
{\em line} & The line which is logged. \\
\hline
{\em fmt} & The ouptut format to use. \\
\hline
{\em data} & The file which will store the output (as a F\+I\+L\+E $\ast$). \\
\hline
{\em args} & The arguments needed by the format.\\
\hline
\end{DoxyParams}
This method will never output color.

\begin{DoxyNote}{Note}
M\+T\+: if threads are enabled, this function is called within locks. 

M\+T\+: Threads different from main thread will have thread id appended to domain name. 
\end{DoxyNote}
\hypertarget{group__Eina__Log__Group_ga3f738cb0b3cc42b390bea0091598f792}{\index{Log@{Log}!eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+journald@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+journald}}
\index{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+journald@{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+journald}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+journald}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+print\+\_\+cb\+\_\+journald (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Log\+\_\+\+Domain} $\ast$}]{d, }
\item[{{\bf Eina\+\_\+\+Log\+\_\+\+Level}}]{level, }
\item[{const char $\ast$}]{file, }
\item[{const char $\ast$}]{fnc, }
\item[{int}]{line, }
\item[{const char $\ast$}]{fmt, }
\item[{void $\ast$}]{data, }
\item[{va\+\_\+list}]{args}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga3f738cb0b3cc42b390bea0091598f792}


Alternative logging method, this will output to systemd journal. 


\begin{DoxyParams}{Parameters}
{\em d} & The domain. \\
\hline
{\em level} & Not used. \\
\hline
{\em file} & The file which is logged. \\
\hline
{\em fnc} & The function which is logged. \\
\hline
{\em line} & The line which is logged. \\
\hline
{\em fmt} & The ouptut format to use. \\
\hline
{\em data} & The file which will store the output (as a F\+I\+L\+E $\ast$). \\
\hline
{\em args} & The arguments needed by the format.\\
\hline
\end{DoxyParams}
This method will never output color.

\begin{DoxyNote}{Note}
if systemd journal is not there it will display error on stderr. 

if the process has been started by systemd this will be the default logging method.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\hypertarget{group__Eina__Log__Group_ga8d62710854f95b1685da55e382ee4ce3}{\index{Log@{Log}!eina\+\_\+log\+\_\+console\+\_\+color\+\_\+set@{eina\+\_\+log\+\_\+console\+\_\+color\+\_\+set}}
\index{eina\+\_\+log\+\_\+console\+\_\+color\+\_\+set@{eina\+\_\+log\+\_\+console\+\_\+color\+\_\+set}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+console\+\_\+color\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+console\+\_\+color\+\_\+set (
\begin{DoxyParamCaption}
\item[{F\+I\+L\+E $\ast$}]{fp, }
\item[{const char $\ast$}]{color}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_ga8d62710854f95b1685da55e382ee4ce3}


Configure console color of given file. 


\begin{DoxyParams}{Parameters}
{\em fp} & file to configure console color (usually stderr or stdout). \\
\hline
{\em color} & a V\+T color code such as E\+I\+N\+A\+\_\+\+C\+O\+L\+O\+R\+\_\+\+R\+E\+D or E\+I\+N\+A\+\_\+\+C\+O\+L\+O\+R\+\_\+\+R\+E\+S\+E\+T.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
if color is disabled, nothing is done. See \hyperlink{group__Eina__Log__Group_gae49c947e0b48d26a5662de6c50ef9b6d}{eina\+\_\+log\+\_\+color\+\_\+disable\+\_\+get()} 

on windows, both {\itshape fp} and {\itshape color} is converted automatically.
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+7 
\end{DoxySince}
\hypertarget{group__Eina__Log__Group_gae4c6830a0e5fccbfcbbc55163d98ef23}{\index{Log@{Log}!eina\+\_\+log\+\_\+timing@{eina\+\_\+log\+\_\+timing}}
\index{eina\+\_\+log\+\_\+timing@{eina\+\_\+log\+\_\+timing}!Log@{Log}}
\subsubsection[{eina\+\_\+log\+\_\+timing}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void eina\+\_\+log\+\_\+timing (
\begin{DoxyParamCaption}
\item[{int}]{domain, }
\item[{{\bf Eina\+\_\+\+Log\+\_\+\+State}}]{state, }
\item[{const char $\ast$}]{phase}
\end{DoxyParamCaption}
)}}\label{group__Eina__Log__Group_gae4c6830a0e5fccbfcbbc55163d98ef23}


Start or stop the timing of a phase. 


\begin{DoxyParams}{Parameters}
{\em domain} & The domain. \\
\hline
{\em state} & State indicating if we are starting or stopping a phase. \\
\hline
{\em phase} & The name of the phase to be used in the log.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
One domain can be in only one phase at a time. 

If you change the name of the phase, it is assumed that the previous phase has stopped. 

The phase name should be available for all the life of the timing. 
\end{DoxyNote}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


Referenced by ecore\+\_\+audio\+\_\+init(), ecore\+\_\+audio\+\_\+shutdown(), ecore\+\_\+con\+\_\+init(), ecore\+\_\+con\+\_\+shutdown(), ecore\+\_\+evas\+\_\+init(), ecore\+\_\+evas\+\_\+shutdown(), ecore\+\_\+init(), ecore\+\_\+shutdown(), edje\+\_\+init(), eet\+\_\+init(), eet\+\_\+shutdown(), eina\+\_\+init(), eina\+\_\+shutdown(), eio\+\_\+init(), eio\+\_\+shutdown(), evas\+\_\+init(), and evas\+\_\+shutdown().

