+ ;
+
+/** \brief converts log level string to log level (integer)
+ \param str log level string
+ \return log level mask
+
+ yaz_log_mask_str() converts a comma-separated list of log levels to a
+ bit mask. Starts from default level, and adds bits as specified,
+ unless 'none' is specified, which clears the list. If a name matches
+ the name of a YLOG_BIT above, that one is set. Otherwise a new value is
+ picked, and given to that name, to be found with yaz_log_module_level()
+*/
+YAZ_EXPORT int yaz_log_mask_str(const char *str);
+
+/** \brief converts log level string to log level with "start" level
+ \param str log level string
+ \param level initialing log level
+ \return log level mask
+
+ yaz_log_mask_str_x() is like yaz_log_mask_str(), but with a given start
+ value.
+*/
+YAZ_EXPORT int yaz_log_mask_str_x(const char *str, int level);
+
+/** \brief returns level for module
+ \param name module name
+ \returns log level for module
+
+ yaz_log_module_level() returns a log level mask corresponding to the
+ module name. If that had been specified on the -v arguments (that is
+ passed to yaz_log_mask_str()), then a non-zero mask is returned. If
+ not, we get a zero. This can later be used in yaz_log for the level
+ argument
+ */
+YAZ_EXPORT int yaz_log_module_level(const char *name);
+
+/** \brief returns FILE handle for log or NULL if no file is in use
+ \retval FILE FILE handle in use (possibly stderr)
+ \retval NULL log is currently not written to a file
+*/
+YAZ_EXPORT FILE *yaz_log_file(void);
+
+/** \brief sets custom log handler
+ \param func custom log handler
+ \param info custom pointer to be passed to func handler
+
+ Allows log output to be captured to something else.. The
+ func parameter takes a log level, a message + custom pointer
+*/
+YAZ_EXPORT void yaz_log_set_handler(void (*func)(int, const char *,
+ void *), void *info);
+
+/** \brief reopen current log file (unless disabled or stderr)
+ */
+YAZ_EXPORT void yaz_log_reopen(void);
+
+/** \brief Truncate the log file */
+YAZ_EXPORT void yaz_log_trunc(void);
+
+/** \brief installs hook to be called before each log msg
+ \param func function to be called
+ \param info user data to be passed to function
+ */
+YAZ_EXPORT void log_event_start(void (*func)(int level, const char *msg,
+ void *info), void *info);
+
+/** \brief installs hook to be called after each log msg
+ \param func function to be called
+ \param info user data to be passed to function
+ */
+YAZ_EXPORT void log_event_end(void (*func)(int level, const char *msg,
+ void *info), void *info);
+
+/** \brief Makes Libxml2 and Libxslt log errors through yaz_log
+ \param prefix prefix to use for log messages (may be 0)
+ \param log_level log level to use for Libxml2/Libxslt messages
+*/
+YAZ_EXPORT void yaz_log_xml_errors(const char *prefix, int log_level);
+