2 * Copyright (c) 1995-2000, Index Data.
4 * Permission to use, copy, modify, distribute, and sell this software and
5 * its documentation, in whole or in part, for any purpose, is hereby granted,
8 * 1. This copyright and permission notice appear in all copies of the
9 * software and its documentation. Notices of copyright or attribution
10 * which appear at the beginning of any file must remain unchanged.
12 * 2. The name of Index Data or the individual authors may not be used to
13 * endorse or promote products derived from this software without specific
14 * prior written permission.
16 * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
18 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
19 * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
20 * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
21 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
22 * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
23 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
27 * Revision 1.4 2000-09-04 08:58:15 adam
28 * Added prefix yaz_ for most logging utility functions.
30 * Revision 1.3 2000/06/09 13:51:01 ian
31 * Added LOG_APP for logging application (Rather than code) events that might
32 * be useful when creating usage reports.
34 * Revision 1.2 2000/02/28 11:20:06 adam
35 * Using autoconf. New definitions: YAZ_BEGIN_CDECL/YAZ_END_CDECL.
37 * Revision 1.1 1999/11/30 13:47:11 adam
38 * Improved installation. Moved header files to include/yaz.
40 * Revision 1.15 1999/08/27 09:40:32 adam
41 * Renamed logf function to yaz_log. Removed VC++ project files.
43 * Revision 1.14 1998/10/28 10:26:59 adam
44 * New functions log_init_file, log_init_level, log_init_prefix.
46 * Revision 1.13 1998/10/13 16:11:11 adam
47 * Added printf-format check for logf when using GNUC.
49 * Revision 1.12 1997/09/04 07:59:02 adam
50 * Added include of xmalloc.h.
52 * Revision 1.11 1997/09/01 08:49:48 adam
53 * New windows NT/95 port using MSV5.0. To export DLL functions the
54 * YAZ_EXPORT modifier was added. Defined in yconfig.h.
56 * Revision 1.10 1997/05/14 06:53:40 adam
59 * Revision 1.9 1997/05/01 15:06:42 adam
60 * Added log_mask_str_x routine.
62 * Revision 1.8 1996/05/01 12:45:00 quinn
63 * *** empty log message ***
65 * Revision 1.7 1996/02/05 12:24:26 adam
66 * Implemented log_event_{start,end}-functions.
68 * Revision 1.6 1995/10/10 16:27:06 quinn
69 * *** empty log message ***
71 * Revision 1.5 1995/09/29 17:12:03 quinn
74 * Revision 1.4 1995/09/27 15:02:47 quinn
75 * Modified function heads & prototypes.
77 * Revision 1.3 1995/06/19 12:38:25 quinn
78 * Reorganized include-files. Added small features.
80 * Revision 1.2 1995/05/16 08:50:31 quinn
81 * License, documentation, and memory fixes
83 * Revision 1.1 1995/03/30 09:39:41 quinn
84 * Moved .h files to include directory
86 * Revision 1.4 1994/09/28 13:07:22 adam
89 * Revision 1.3 1994/08/18 08:18:45 quinn
90 * Added prefix to log_init.
92 * Revision 1.2 1994/08/17 14:27:46 quinn
95 * Revision 1.1 1994/08/17 13:22:52 quinn
104 #include <yaz/yconfig.h>
105 #include <yaz/xmalloc.h>
109 #define LOG_FATAL 0x0001
110 #define LOG_DEBUG 0x0002
111 #define LOG_WARN 0x0004
112 #define LOG_LOG 0x0008
113 #define LOG_ERRNO 0x0010 /* append strerror to message */
114 #define LOG_FILE 0x0020
115 #define LOG_APP 0x0040 /* For application level events such as new-connection */
117 #define LOG_ALL 0xffff
119 #define LOG_DEFAULT_LEVEL (LOG_FATAL | LOG_ERRNO | LOG_LOG | LOG_WARN)
123 YAZ_EXPORT void yaz_log_init(int level, const char *prefix, const char *name);
124 YAZ_EXPORT void yaz_log_init_file (const char *fname);
125 YAZ_EXPORT void yaz_log_init_level (int level);
126 YAZ_EXPORT void yaz_log_init_prefix (const char *prefix);
128 YAZ_EXPORT void yaz_log(int level, const char *fmt, ...)
130 __attribute__ ((format (printf, 2, 3)))
133 YAZ_EXPORT int yaz_log_mask_str (const char *str);
134 YAZ_EXPORT int yaz_log_mask_str_x (const char *str, int level);
135 YAZ_EXPORT FILE *yaz_log_file(void);
137 YAZ_EXPORT void log_event_start (void (*func)(int level, const char *msg, void *info),
139 YAZ_EXPORT void log_event_end (void (*func)(int level, const char *msg, void *info),