/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2009 Index Data.
+ * Copyright (C) 1995-2013 Index Data.
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
#define YLOG_LOG 0x00000008
/** \brief log level: append system error message */
#define YLOG_ERRNO 0x00000010
+/** \brief log level: append thread Id */
+#define YLOG_TID 0x00000020
/** \brief log level: application */
-#define YLOG_APP 0x00000040
+#define YLOG_APP 0x00000040
/** \brief log level: malloc debug */
#define YLOG_MALLOC 0x00000080
/** \brief log level: do not output date and time */
#define YLOG_NOTIME 0x00000100
/** \brief log level: application 2 */
-#define YLOG_APP2 0x00000200
+#define YLOG_APP2 0x00000200
/** \brief log level: application 3 */
#define YLOG_APP3 0x00000400
/** \brief log level: flush */
/** \brief sets level, prefix and filename for logging
\param level log level
\param prefix log message prefix
- \param fname filename
+ \param fname filename
+
+ If fname is NULL, the filename logging is not changed.
*/
YAZ_EXPORT void yaz_log_init(int level, const char *prefix, const char *fname);
-/** \brief sets log to a file
- \param fname filename
+/** \brief sets log file
+ \param fname filename
+
+ A filename of NULL makes the log to be completely disabled.
+ A filename which is the empty string ("") makes the system
+ log to stderr (which is also the default). Otherwise the
+ filename given is used.
*/
YAZ_EXPORT void yaz_log_init_file(const char *fname);
*/
YAZ_EXPORT void yaz_log_init_level(int level);
-/** \brief sets log message prefix
+/** \brief sets log message prefix
\param prefix log message prefix
*/
YAZ_EXPORT void yaz_log_init_prefix(const char *prefix);
*/
YAZ_EXPORT void yaz_log_time_format(const char *fmt);
-/** \brief sets limit in bytes for size for log file
+/** \brief sets limit in bytes for size for log file
\param mx size in bytes
Sets the max size for a log file. Zero means no limit.
/** \brief Writes log message
\param level log level mask
\param fmt format string ala printf
-
+
Writes an entry in the log. Defaults to stderr if not initialized or
to a file with yaz_log_init_file(). The level must match the level set
via yaz_log_init_level(), optionally defined via yaz_log_mask_str().
/** \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()
+ picked, and given to that name, to be found with yaz_log_module_level()
*/
YAZ_EXPORT int yaz_log_mask_str(const char *str);
\return log level mask
yaz_log_mask_str_x() is like yaz_log_mask_str(), but with a given start
- value
+ 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
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
+ \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/Libxslt log errors via yaz_log
+/** \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 messages
+ \param log_level log level to use for Libxml2/Libxslt messages
*/
YAZ_EXPORT void yaz_log_xml_errors(const char *prefix, int log_level);
-/* by default, do not enable the old LOG_-defines */
-#ifndef YAZ_USE_NEW_LOG
-#define YAZ_USE_NEW_LOG 1
-#endif
-
-#if YAZ_USE_NEW_LOG
-
-#else
-
-#include <yaz/xmalloc.h>
-
-/** The old LOG_ bit names are here for compatibility only. They may
- conflict with bits defined in syslog.h, or other places. 'LOG'
- really is not such a good name. YLOG must be more unique
-*/
-
-/** \brief old log level */
-#define LOG_FATAL YLOG_FATAL
-/** \brief old log level */
-#define LOG_DEBUG YLOG_DEBUG
-/** \brief old log level */
-#define LOG_WARN YLOG_WARN
-/** \brief old log level */
-#define LOG_LOG YLOG_LOG
-/** \brief old log level */
-#define LOG_ERRNO YLOG_ERRNO
-/** \brief old log level */
-#define LOG_FILE 0x00000020
-/** \brief old log level */
-#define LOG_APP YLOG_APP
-/** \brief old log level */
-#define LOG_MALLOC YLOG_MALLOC
-/** \brief old log level */
-#define LOG_NOTIME YLOG_NOTIME
-/** \brief old log level */
-#define LOG_APP2 YLOG_APP2
-/** \brief old log level */
-#define LOG_APP3 YLOG_APP3
-/** \brief old log level */
-#define LOG_FLUSH YLOG_FLUSH
-/** \brief old log level */
-#define LOG_ALL YLOG_ALL
-/** \brief old log level */
-#define LOG_DEFAULT_LEVEL YLOG_DEFAULT_LEVEL
-
-/** \brief logf is deprecated, as it conflicts with a math function */
-#define logf yaz_log
-
-#endif /* if !YAZ_USE_NEW_LOG */
-
YAZ_END_CDECL
#endif
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab