\doxysection{log\+\_\+target Struct Reference}
\label{structlog__target}\index{log\_target@{log\_target}}


{\ttfamily \#include $<$logging.\+h$>$}

\doxysubsection*{Data Fields}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ llist\+\_\+head} \textbf{ entry}
\begin{DoxyCompactList}\small\item\em linked list \end{DoxyCompactList}\item 
int filter\+\_\+map \textbf{ OSMO\+\_\+\+DEPRECATED\+\_\+\+OUTSIDE\+\_\+\+LIBOSMOCORE\+\_\+\+LOG\+\_\+\+TARGET}
\begin{DoxyCompactList}\small\item\em Internal data for filtering. \end{DoxyCompactList}\item 
void $\ast$filter\+\_\+data[\textbf{ LOG\+\_\+\+MAX\+\_\+\+FILTERS}+1] \textbf{ OSMO\+\_\+\+DEPRECATED\+\_\+\+OUTSIDE\+\_\+\+LIBOSMOCORE\+\_\+\+LOG\+\_\+\+TARGET}
\begin{DoxyCompactList}\small\item\em Internal data for filtering. \end{DoxyCompactList}\item 
struct \textbf{ log\+\_\+category} $\ast$ \textbf{ categories}
\begin{DoxyCompactList}\small\item\em logging categories \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ loglevel}
\begin{DoxyCompactList}\small\item\em global log level \end{DoxyCompactList}\item 
unsigned int \textbf{ use\+\_\+color}\+:1
\begin{DoxyCompactList}\small\item\em should color be used when printing log messages? \end{DoxyCompactList}\item 
unsigned int \textbf{ print\+\_\+timestamp}\+:1
\begin{DoxyCompactList}\small\item\em should log messages be prefixed with a timestamp? \end{DoxyCompactList}\item 
unsigned int \textbf{ print\+\_\+tid}\+:1
\begin{DoxyCompactList}\small\item\em should log messages be prefixed with the logger Thread ID? \end{DoxyCompactList}\item 
unsigned int \textbf{ print\+\_\+filename}\+:1
\begin{DoxyCompactList}\small\item\em DEPRECATED\+: use print\+\_\+filename2 instead. \end{DoxyCompactList}\item 
unsigned int \textbf{ print\+\_\+category}\+:1
\begin{DoxyCompactList}\small\item\em should log messages be prefixed with a category name? \end{DoxyCompactList}\item 
unsigned int \textbf{ print\+\_\+ext\+\_\+timestamp}\+:1
\begin{DoxyCompactList}\small\item\em should log messages be prefixed with an extended timestamp? \end{DoxyCompactList}\item 
enum \textbf{ log\+\_\+target\+\_\+type} \textbf{ type}
\begin{DoxyCompactList}\small\item\em the type of this log taget \end{DoxyCompactList}\item 
\begin{tabbing}
xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill
union \{\\
\>struct \{\\
\>\>FILE $\ast$ \textbf{ out}\\
\>\>const char $\ast$ \textbf{ fname}\\
\>\>struct \textbf{ osmo\_wqueue} $\ast$ \textbf{ wqueue}\\
\>\} \textbf{ tgt\_file}\\
\>struct \{\\
\>\>int \textbf{ priority}\\
\>\>int \textbf{ facility}\\
\>\} \textbf{ tgt\_syslog}\\
\>struct \{\\
\>\>void $\ast$ \textbf{ vty}\\
\>\} \textbf{ tgt\_vty}\\
\>struct \{\\
\>\>void $\ast$ \textbf{ rb}\\
\>\} \textbf{ tgt\_rb}\\
\>struct \{\\
\>\>struct \textbf{ gsmtap\_inst} $\ast$ \textbf{ gsmtap\_inst}\\
\>\>const char $\ast$ \textbf{ ident}\\
\>\>const char $\ast$ \textbf{ hostname}\\
\>\} \textbf{ tgt\_gsmtap}\\
\>struct \{\\
\>\>bool \textbf{ raw}\\
\>\} \textbf{ sd\_journal}\\
\}; \\

\end{tabbing}\item 
void($\ast$ \textbf{ output} )(struct \textbf{ log\+\_\+target} $\ast$target, unsigned int \textbf{ level}, const char $\ast$string)
\begin{DoxyCompactList}\small\item\em call-\/back function to be called when the logging framework wants to log a fully formatted string \end{DoxyCompactList}\item 
void($\ast$ \textbf{ raw\+\_\+output} )(struct \textbf{ log\+\_\+target} $\ast$target, int \textbf{ subsys}, unsigned int \textbf{ level}, const char $\ast$\textbf{ file}, int line, int cont, const char $\ast$format, va\+\_\+list ap)
\begin{DoxyCompactList}\small\item\em alternative call-\/back function to which the logging framework passes the unfortmatted input arguments, i.\+e. \end{DoxyCompactList}\item 
bool \textbf{ print\+\_\+level}
\item 
bool \textbf{ print\+\_\+category\+\_\+hex}
\item 
enum \textbf{ log\+\_\+filename\+\_\+type} \textbf{ print\+\_\+filename2}
\item 
enum \textbf{ log\+\_\+filename\+\_\+pos} \textbf{ print\+\_\+filename\+\_\+pos}
\end{DoxyCompactItemize}


\doxysubsection{Field Documentation}
\mbox{\label{structlog__target_a94c0e92d19cc155845395d514842e7d6}} 
\doxysubsubsection{}
{\footnotesize\ttfamily union  \{ ... \}  log\+\_\+target\+::@9}

\mbox{\label{structlog__target_a2d9445dcd37557bfd51ef3bd2cfea72d}} 
\index{log\_target@{log\_target}!categories@{categories}}
\index{categories@{categories}!log\_target@{log\_target}}
\doxysubsubsection{categories}
{\footnotesize\ttfamily struct \textbf{ log\+\_\+category}$\ast$ log\+\_\+target\+::categories}



logging categories 



Referenced by \textbf{ log\+\_\+cache\+\_\+update()}, \textbf{ log\+\_\+cache\+\_\+update\+\_\+all()}, \textbf{ log\+\_\+parse\+\_\+category\+\_\+mask()}, \textbf{ log\+\_\+set\+\_\+category\+\_\+filter()}, \textbf{ log\+\_\+target\+\_\+create()}, and \textbf{ should\+\_\+log\+\_\+to\+\_\+target()}.

\mbox{\label{structlog__target_a2ef53abf794aa816b027560673c8ff6e}} 
\index{log\_target@{log\_target}!entry@{entry}}
\index{entry@{entry}!log\_target@{log\_target}}
\doxysubsubsection{entry}
{\footnotesize\ttfamily struct \textbf{ llist\+\_\+head} log\+\_\+target\+::entry}



linked list 



Referenced by \textbf{ log\+\_\+add\+\_\+target()}, \textbf{ log\+\_\+cache\+\_\+update\+\_\+all()}, \textbf{ log\+\_\+check\+\_\+level()}, \textbf{ log\+\_\+del\+\_\+target()}, \textbf{ log\+\_\+fini()}, \textbf{ log\+\_\+target\+\_\+create()}, \textbf{ log\+\_\+target\+\_\+find()}, \textbf{ log\+\_\+targets\+\_\+reopen()}, and \textbf{ osmo\+\_\+vlogp()}.

\mbox{\label{structlog__target_a596d976fd0ae8d6eb5d76418f77c881e}} 
\index{log\_target@{log\_target}!facility@{facility}}
\index{facility@{facility}!log\_target@{log\_target}}
\doxysubsubsection{facility}
{\footnotesize\ttfamily int log\+\_\+target\+::facility}



Referenced by \textbf{ log\+\_\+target\+\_\+create\+\_\+syslog()}.

\mbox{\label{structlog__target_aa5bb6f9bd13aa6bde09d52451ace29e4}} 
\index{log\_target@{log\_target}!fname@{fname}}
\index{fname@{fname}!log\_target@{log\_target}}
\doxysubsubsection{fname}
{\footnotesize\ttfamily const char$\ast$ log\+\_\+target\+::fname}



Referenced by \textbf{ \+\_\+log\+\_\+target\+\_\+file\+\_\+setup\+\_\+iofd()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+file()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+destroy()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+reopen()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+stream()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+wqueue()}, and \textbf{ log\+\_\+target\+\_\+find()}.

\mbox{\label{structlog__target_a736acc6de083e103669fa150f8db9a86}} 
\index{log\_target@{log\_target}!gsmtap\_inst@{gsmtap\_inst}}
\index{gsmtap\_inst@{gsmtap\_inst}!log\_target@{log\_target}}
\doxysubsubsection{gsmtap\_inst}
{\footnotesize\ttfamily struct \textbf{ gsmtap\+\_\+inst}$\ast$ log\+\_\+target\+::gsmtap\+\_\+inst}



Referenced by \textbf{ \+\_\+gsmtap\+\_\+raw\+\_\+output()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+gsmtap()}, and \textbf{ log\+\_\+target\+\_\+destroy()}.

\mbox{\label{structlog__target_ad8ea9ba8140fb5fcb8c9d025f2a56557}} 
\index{log\_target@{log\_target}!hostname@{hostname}}
\index{hostname@{hostname}!log\_target@{log\_target}}
\doxysubsubsection{hostname}
{\footnotesize\ttfamily const char$\ast$ log\+\_\+target\+::hostname}



Referenced by \textbf{ log\+\_\+target\+\_\+create\+\_\+gsmtap()}, and \textbf{ log\+\_\+target\+\_\+find()}.

\mbox{\label{structlog__target_ae12fd4a3f15470337128812897ddc750}} 
\index{log\_target@{log\_target}!ident@{ident}}
\index{ident@{ident}!log\_target@{log\_target}}
\doxysubsubsection{ident}
{\footnotesize\ttfamily const char$\ast$ log\+\_\+target\+::ident}



Referenced by \textbf{ \+\_\+gsmtap\+\_\+raw\+\_\+output()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+gsmtap()}, and \textbf{ log\+\_\+target\+\_\+create\+\_\+syslog()}.

\mbox{\label{structlog__target_afcc8cbf5fc63a86077d7fb0e13bcd807}} 
\index{log\_target@{log\_target}!loglevel@{loglevel}}
\index{loglevel@{loglevel}!log\_target@{log\_target}}
\doxysubsubsection{loglevel}
{\footnotesize\ttfamily uint8\+\_\+t log\+\_\+target\+::loglevel}



global log level 



Referenced by \textbf{ \+\_\+gsmtap\+\_\+raw\+\_\+output()}, \textbf{ log\+\_\+cache\+\_\+update()}, \textbf{ log\+\_\+cache\+\_\+update\+\_\+all()}, \textbf{ log\+\_\+set\+\_\+log\+\_\+level()}, \textbf{ log\+\_\+target\+\_\+create()}, and \textbf{ should\+\_\+log\+\_\+to\+\_\+target()}.

\mbox{\label{structlog__target_a6fe8b91ed45b1a84ffc4ee9a226cb1d7}} 
\index{log\_target@{log\_target}!OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET@{OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET}}
\index{OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET@{OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET}!log\_target@{log\_target}}
\doxysubsubsection{OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily int filter\+\_\+map log\+\_\+target\+::\+OSMO\+\_\+\+DEPRECATED\+\_\+\+OUTSIDE\+\_\+\+LIBOSMOCORE\+\_\+\+LOG\+\_\+\+TARGET}



Internal data for filtering. 

\mbox{\label{structlog__target_ae859b103d76c993418c0fb4656ea47f8}} 
\index{log\_target@{log\_target}!OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET@{OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET}}
\index{OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET@{OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET}!log\_target@{log\_target}}
\doxysubsubsection{OSMO\_DEPRECATED\_OUTSIDE\_LIBOSMOCORE\_LOG\_TARGET\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void$\ast$ filter\+\_\+data [\textbf{ LOG\+\_\+\+MAX\+\_\+\+FILTERS}+1] log\+\_\+target\+::\+OSMO\+\_\+\+DEPRECATED\+\_\+\+OUTSIDE\+\_\+\+LIBOSMOCORE\+\_\+\+LOG\+\_\+\+TARGET}



Internal data for filtering. 

\mbox{\label{structlog__target_ac8ee0a882342484cd9677c42d92631bc}} 
\index{log\_target@{log\_target}!out@{out}}
\index{out@{out}!log\_target@{log\_target}}
\doxysubsubsection{out}
{\footnotesize\ttfamily FILE$\ast$ log\+\_\+target\+::out}



Referenced by \textbf{ \+\_\+file\+\_\+output\+\_\+stream()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+file()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+stderr()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+destroy()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+get\+\_\+nonblock()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+reopen()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+set\+\_\+nonblock()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+stream()}, and \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+wqueue()}.

\mbox{\label{structlog__target_afbd749ebfccf636f4f1d040dfdcad822}} 
\index{log\_target@{log\_target}!output@{output}}
\index{output@{output}!log\_target@{log\_target}}
\doxysubsubsection{output}
{\footnotesize\ttfamily void($\ast$ log\+\_\+target\+::output) (struct \textbf{ log\+\_\+target} $\ast$target, unsigned int \textbf{ level}, const char $\ast$string)}



call-\/back function to be called when the logging framework wants to log a fully formatted string 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em target} & logging target \\
\hline
\mbox{\texttt{ in}}  & {\em level} & log level of currnet message \\
\hline
\mbox{\texttt{ in}}  & {\em string} & the string that is to be written to the log \\
\hline
\end{DoxyParams}


Referenced by \textbf{ \+\_\+gsmtap\+\_\+raw\+\_\+output()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+file()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+gsmtap()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+rb()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+stderr()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+syslog()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+stream()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+wqueue()}, \textbf{ log\+\_\+target\+\_\+systemd\+\_\+set\+\_\+raw()}, and \textbf{ osmo\+\_\+vlogp()}.

\mbox{\label{structlog__target_aa6eb21fb3a39815e6fb6d072bb18ded3}} 
\index{log\_target@{log\_target}!print\_category@{print\_category}}
\index{print\_category@{print\_category}!log\_target@{log\_target}}
\doxysubsubsection{print\_category}
{\footnotesize\ttfamily unsigned int log\+\_\+target\+::print\+\_\+category}



should log messages be prefixed with a category name? 



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, and \textbf{ log\+\_\+set\+\_\+print\+\_\+category()}.

\mbox{\label{structlog__target_a0a8c5ea7c910e3226bcee508ccc1d6b0}} 
\index{log\_target@{log\_target}!print\_category\_hex@{print\_category\_hex}}
\index{print\_category\_hex@{print\_category\_hex}!log\_target@{log\_target}}
\doxysubsubsection{print\_category\_hex}
{\footnotesize\ttfamily bool log\+\_\+target\+::print\+\_\+category\+\_\+hex}



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, \textbf{ log\+\_\+set\+\_\+print\+\_\+category\+\_\+hex()}, and \textbf{ log\+\_\+target\+\_\+create()}.

\mbox{\label{structlog__target_a9798b19dfea4594dde0f8d183dd1c0c9}} 
\index{log\_target@{log\_target}!print\_ext\_timestamp@{print\_ext\_timestamp}}
\index{print\_ext\_timestamp@{print\_ext\_timestamp}!log\_target@{log\_target}}
\doxysubsubsection{print\_ext\_timestamp}
{\footnotesize\ttfamily unsigned int log\+\_\+target\+::print\+\_\+ext\+\_\+timestamp}



should log messages be prefixed with an extended timestamp? 



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, and \textbf{ log\+\_\+set\+\_\+print\+\_\+extended\+\_\+timestamp()}.

\mbox{\label{structlog__target_a60e15401b2499ecf5e1b19d4cfde249f}} 
\index{log\_target@{log\_target}!print\_filename@{print\_filename}}
\index{print\_filename@{print\_filename}!log\_target@{log\_target}}
\doxysubsubsection{print\_filename}
{\footnotesize\ttfamily unsigned int log\+\_\+target\+::print\+\_\+filename}



DEPRECATED\+: use print\+\_\+filename2 instead. 



Referenced by \textbf{ log\+\_\+set\+\_\+print\+\_\+filename()}.

\mbox{\label{structlog__target_a45dac9b9d4844f7ecc551e7ec1e28add}} 
\index{log\_target@{log\_target}!print\_filename2@{print\_filename2}}
\index{print\_filename2@{print\_filename2}!log\_target@{log\_target}}
\doxysubsubsection{print\_filename2}
{\footnotesize\ttfamily enum \textbf{ log\+\_\+filename\+\_\+type} log\+\_\+target\+::print\+\_\+filename2}



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, \textbf{ log\+\_\+set\+\_\+print\+\_\+filename2()}, and \textbf{ log\+\_\+target\+\_\+create()}.

\mbox{\label{structlog__target_a5dba5146de599e2f72aedda73794fc68}} 
\index{log\_target@{log\_target}!print\_filename\_pos@{print\_filename\_pos}}
\index{print\_filename\_pos@{print\_filename\_pos}!log\_target@{log\_target}}
\doxysubsubsection{print\_filename\_pos}
{\footnotesize\ttfamily enum \textbf{ log\+\_\+filename\+\_\+pos} log\+\_\+target\+::print\+\_\+filename\+\_\+pos}



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, and \textbf{ log\+\_\+set\+\_\+print\+\_\+filename\+\_\+pos()}.

\mbox{\label{structlog__target_ad8a0b357d890aeb16ea77cea915389c4}} 
\index{log\_target@{log\_target}!print\_level@{print\_level}}
\index{print\_level@{print\_level}!log\_target@{log\_target}}
\doxysubsubsection{print\_level}
{\footnotesize\ttfamily bool log\+\_\+target\+::print\+\_\+level}



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, and \textbf{ log\+\_\+set\+\_\+print\+\_\+level()}.

\mbox{\label{structlog__target_a2e36745936717a7c9639b341f5f630d9}} 
\index{log\_target@{log\_target}!print\_tid@{print\_tid}}
\index{print\_tid@{print\_tid}!log\_target@{log\_target}}
\doxysubsubsection{print\_tid}
{\footnotesize\ttfamily unsigned int log\+\_\+target\+::print\+\_\+tid}



should log messages be prefixed with the logger Thread ID? 



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, \textbf{ log\+\_\+set\+\_\+print\+\_\+tid()}, and \textbf{ log\+\_\+target\+\_\+create()}.

\mbox{\label{structlog__target_a0fcc68c7f1db7a2be635eaac57eefdf8}} 
\index{log\_target@{log\_target}!print\_timestamp@{print\_timestamp}}
\index{print\_timestamp@{print\_timestamp}!log\_target@{log\_target}}
\doxysubsubsection{print\_timestamp}
{\footnotesize\ttfamily unsigned int log\+\_\+target\+::print\+\_\+timestamp}



should log messages be prefixed with a timestamp? 



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, \textbf{ log\+\_\+set\+\_\+print\+\_\+extended\+\_\+timestamp()}, \textbf{ log\+\_\+set\+\_\+print\+\_\+timestamp()}, and \textbf{ log\+\_\+target\+\_\+create()}.

\mbox{\label{structlog__target_a0d6938973ae685ab2d24d73dcc7e2a06}} 
\index{log\_target@{log\_target}!priority@{priority}}
\index{priority@{priority}!log\_target@{log\_target}}
\doxysubsubsection{priority}
{\footnotesize\ttfamily int log\+\_\+target\+::priority}

\mbox{\label{structlog__target_aa1580338e8fa9db71b18a3d569248f46}} 
\index{log\_target@{log\_target}!raw@{raw}}
\index{raw@{raw}!log\_target@{log\_target}}
\doxysubsubsection{raw}
{\footnotesize\ttfamily bool log\+\_\+target\+::raw}



Referenced by \textbf{ log\+\_\+target\+\_\+create\+\_\+systemd()}, and \textbf{ log\+\_\+target\+\_\+systemd\+\_\+set\+\_\+raw()}.

\mbox{\label{structlog__target_a4b9b00a4ab83f001fe9b9114a3750967}} 
\index{log\_target@{log\_target}!raw\_output@{raw\_output}}
\index{raw\_output@{raw\_output}!log\_target@{log\_target}}
\doxysubsubsection{raw\_output}
{\footnotesize\ttfamily void($\ast$ log\+\_\+target\+::raw\+\_\+output) (struct \textbf{ log\+\_\+target} $\ast$target, int \textbf{ subsys}, unsigned int \textbf{ level}, const char $\ast$\textbf{ file}, int line, int cont, const char $\ast$format, va\+\_\+list ap)}



alternative call-\/back function to which the logging framework passes the unfortmatted input arguments, i.\+e. 

bypassing the internal string formatter 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em target} & logging target \\
\hline
\mbox{\texttt{ in}}  & {\em subsys} & logging sub-\/system \\
\hline
\mbox{\texttt{ in}}  & {\em level} & logging level \\
\hline
\mbox{\texttt{ in}}  & {\em file} & soure code file name \\
\hline
\mbox{\texttt{ in}}  & {\em line} & source code file line number \\
\hline
\mbox{\texttt{ in}}  & {\em cont} & continuation of previous statement? \\
\hline
\mbox{\texttt{ in}}  & {\em format} & format string \\
\hline
\mbox{\texttt{ in}}  & {\em ap} & vararg list of printf arguments \\
\hline
\end{DoxyParams}


Referenced by \textbf{ log\+\_\+target\+\_\+create\+\_\+emscripten()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+gsmtap()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+stream()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+wqueue()}, \textbf{ log\+\_\+target\+\_\+systemd\+\_\+set\+\_\+raw()}, and \textbf{ osmo\+\_\+vlogp()}.

\mbox{\label{structlog__target_a99023ffc2b1088b4790fa7b91287af18}} 
\index{log\_target@{log\_target}!rb@{rb}}
\index{rb@{rb}!log\_target@{log\_target}}
\doxysubsubsection{rb}
{\footnotesize\ttfamily void$\ast$ log\+\_\+target\+::rb}



Referenced by \textbf{ \+\_\+rb\+\_\+output()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+rb()}, \textbf{ log\+\_\+target\+\_\+rb\+\_\+avail\+\_\+size()}, \textbf{ log\+\_\+target\+\_\+rb\+\_\+get()}, and \textbf{ log\+\_\+target\+\_\+rb\+\_\+used\+\_\+size()}.

\mbox{\label{structlog__target_a2396bc1fecfcc5c67fd2b7bd4aa5f7d8}} 
\index{log\_target@{log\_target}!sd\_journal@{sd\_journal}}
\index{sd\_journal@{sd\_journal}!log\_target@{log\_target}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  log\+\_\+target\+::sd\+\_\+journal}



Referenced by \textbf{ log\+\_\+target\+\_\+systemd\+\_\+set\+\_\+raw()}.

\mbox{\label{structlog__target_a2dcfb425c09ab9735cfee37585900487}} 
\index{log\_target@{log\_target}!tgt\_file@{tgt\_file}}
\index{tgt\_file@{tgt\_file}!log\_target@{log\_target}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  log\+\_\+target\+::tgt\+\_\+file}



Referenced by \textbf{ \+\_\+file\+\_\+output\+\_\+stream()}, \textbf{ \+\_\+file\+\_\+raw\+\_\+output()}, \textbf{ \+\_\+log\+\_\+target\+\_\+file\+\_\+setup\+\_\+iofd()}, \textbf{ \+\_\+log\+\_\+target\+\_\+file\+\_\+setup\+\_\+talloc\+\_\+pool()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+file()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+stderr()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+destroy()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+get\+\_\+nonblock()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+reopen()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+set\+\_\+nonblock()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+stream()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+wqueue()}, and \textbf{ log\+\_\+target\+\_\+find()}.

\mbox{\label{structlog__target_a2b509af68d1d55545697a46d0f880412}} 
\index{log\_target@{log\_target}!tgt\_gsmtap@{tgt\_gsmtap}}
\index{tgt\_gsmtap@{tgt\_gsmtap}!log\_target@{log\_target}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  log\+\_\+target\+::tgt\+\_\+gsmtap}



Referenced by \textbf{ \+\_\+gsmtap\+\_\+raw\+\_\+output()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+gsmtap()}, \textbf{ log\+\_\+target\+\_\+destroy()}, and \textbf{ log\+\_\+target\+\_\+find()}.

\mbox{\label{structlog__target_a94df7fe6e54cb86e40ca2ce34c0d29ae}} 
\index{log\_target@{log\_target}!tgt\_rb@{tgt\_rb}}
\index{tgt\_rb@{tgt\_rb}!log\_target@{log\_target}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  log\+\_\+target\+::tgt\+\_\+rb}



Referenced by \textbf{ \+\_\+rb\+\_\+output()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+rb()}, \textbf{ log\+\_\+target\+\_\+rb\+\_\+avail\+\_\+size()}, \textbf{ log\+\_\+target\+\_\+rb\+\_\+get()}, and \textbf{ log\+\_\+target\+\_\+rb\+\_\+used\+\_\+size()}.

\mbox{\label{structlog__target_ab68cae9f8a626831cf360c3ba918d5a3}} 
\index{log\_target@{log\_target}!tgt\_syslog@{tgt\_syslog}}
\index{tgt\_syslog@{tgt\_syslog}!log\_target@{log\_target}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  log\+\_\+target\+::tgt\+\_\+syslog}



Referenced by \textbf{ log\+\_\+target\+\_\+create\+\_\+syslog()}.

\mbox{\label{structlog__target_a8b176b6ff0ebdc59e4d37903489cd120}} 
\index{log\_target@{log\_target}!tgt\_vty@{tgt\_vty}}
\index{tgt\_vty@{tgt\_vty}!log\_target@{log\_target}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  log\+\_\+target\+::tgt\+\_\+vty}

\mbox{\label{structlog__target_aa7c4ac96bb8d768ebd5312f74d5fd26a}} 
\index{log\_target@{log\_target}!type@{type}}
\index{type@{type}!log\_target@{log\_target}}
\doxysubsubsection{type}
{\footnotesize\ttfamily enum \textbf{ log\+\_\+target\+\_\+type} log\+\_\+target\+::type}



the type of this log taget 



Referenced by \textbf{ log\+\_\+target\+\_\+create\+\_\+emscripten()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+file()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+gsmtap()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+rb()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+stderr()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+syslog()}, \textbf{ log\+\_\+target\+\_\+create\+\_\+systemd()}, \textbf{ log\+\_\+target\+\_\+destroy()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+destroy()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+reopen()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+stream()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+wqueue()}, \textbf{ log\+\_\+target\+\_\+find()}, and \textbf{ log\+\_\+targets\+\_\+reopen()}.

\mbox{\label{structlog__target_a834d7c95d56266ae322f19a3b0381ec4}} 
\index{log\_target@{log\_target}!use\_color@{use\_color}}
\index{use\_color@{use\_color}!log\_target@{log\_target}}
\doxysubsubsection{use\_color}
{\footnotesize\ttfamily unsigned int log\+\_\+target\+::use\+\_\+color}



should color be used when printing log messages? 



Referenced by \textbf{ log\+\_\+output\+\_\+buf()}, \textbf{ log\+\_\+set\+\_\+use\+\_\+color()}, and \textbf{ log\+\_\+target\+\_\+create()}.

\mbox{\label{structlog__target_a12ff87c478629e0a489cd5dd7f5fe51c}} 
\index{log\_target@{log\_target}!vty@{vty}}
\index{vty@{vty}!log\_target@{log\_target}}
\doxysubsubsection{vty}
{\footnotesize\ttfamily void$\ast$ log\+\_\+target\+::vty}

\mbox{\label{structlog__target_a42fc478c3f6126d6c8de3c18acffc65e}} 
\index{log\_target@{log\_target}!wqueue@{wqueue}}
\index{wqueue@{wqueue}!log\_target@{log\_target}}
\doxysubsubsection{wqueue}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+wqueue}$\ast$ log\+\_\+target\+::wqueue}



Referenced by \textbf{ \+\_\+file\+\_\+raw\+\_\+output()}, \textbf{ \+\_\+log\+\_\+target\+\_\+file\+\_\+setup\+\_\+iofd()}, \textbf{ \+\_\+log\+\_\+target\+\_\+file\+\_\+setup\+\_\+talloc\+\_\+pool()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+destroy()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+reopen()}, and \textbf{ log\+\_\+target\+\_\+file\+\_\+switch\+\_\+to\+\_\+stream()}.



The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
include/osmocom/core/\textbf{ logging.\+h}\end{DoxyCompactItemize}
