2 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 * Copyright 1998-2004 The OpenLDAP Foundation.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted only as authorized by the OpenLDAP
11 * A copy of this license is available in file LICENSE in the
12 * top-level directory of the distribution or, alternatively, at
13 * <http://www.OpenLDAP.org/license.html>.
15 /* Portions Copyright (c) 1990 Regents of the University of Michigan.
16 * All rights reserved.
18 * Redistribution and use in source and binary forms are permitted
19 * provided that this notice is preserved and that due credit is given
20 * to the University of Michigan at Ann Arbor. The name of the University
21 * may not be used to endorse or promote products derived from this
22 * software without specific prior written permission. This software
23 * is provided ``as is'' without express or implied warranty.
30 #include <ldap_cdefs.h>
35 * While it's not important that the subsystem number are
36 * contiguous, it is important that the LDAP_SUBSYS_NUM accurately
37 * reflect the number of subsystems and LDAP_SUBSYS_MAX reflect
38 * the largest subsystem number.
40 #define LDAP_SUBSYS_NUM 20
41 #define LDAP_SUBSYS_MAX 19
43 #define LDAP_SUBSYS_GLOBAL 0
44 #define LDAP_SUBSYS_OPERATION 1
45 #define LDAP_SUBSYS_TRANSPORT 2
46 #define LDAP_SUBSYS_CONNECTION 3
47 #define LDAP_SUBSYS_FILTER 4
48 #define LDAP_SUBSYS_BER 5
49 #define LDAP_SUBSYS_CONFIG 6
50 #define LDAP_SUBSYS_ACL 7
51 #define LDAP_SUBSYS_CACHE 8
52 #define LDAP_SUBSYS_INDEX 9
53 #define LDAP_SUBSYS_LDIF 10
54 #define LDAP_SUBSYS_TOOLS 11
55 #define LDAP_SUBSYS_SLAPD 12
56 #define LDAP_SUBSYS_SLURPD 13
57 #define LDAP_SUBSYS_BACKEND 14
58 #define LDAP_SUBSYS_BACK_BDB 15
59 #define LDAP_SUBSYS_BACK_LDBM 16
60 #define LDAP_SUBSYS_BACK_LDAP 17
61 #define LDAP_SUBSYS_BACK_META 18
62 #define LDAP_SUBSYS_BACK_MON 19
65 * debug reporting levels.
67 * They start with the syslog levels, and
68 * go down in importance. The normal
69 * debugging levels begin with LDAP_LEVEL_ENTRY
72 #define LDAP_LEVEL_EMERG 0
73 #define LDAP_LEVEL_ALERT 1
74 #define LDAP_LEVEL_CRIT 2
75 #define LDAP_LEVEL_ERR 3
76 #define LDAP_LEVEL_WARNING 4
77 #define LDAP_LEVEL_NOTICE 5
78 #define LDAP_LEVEL_INFO 6
79 #define LDAP_LEVEL_ENTRY 7 /* log function entry points */
80 #define LDAP_LEVEL_ARGS 8 /* log function call parameters */
81 #define LDAP_LEVEL_RESULTS 9 /* Log function results */
82 #define LDAP_LEVEL_DETAIL1 10 /* log level 1 function operational details */
83 #define LDAP_LEVEL_DETAIL2 11 /* Log level 2 function operational details */
85 #define LDAP_DEBUG_TRACE 0x0001
86 #define LDAP_DEBUG_PACKETS 0x0002
87 #define LDAP_DEBUG_ARGS 0x0004
88 #define LDAP_DEBUG_CONNS 0x0008
89 #define LDAP_DEBUG_BER 0x0010
90 #define LDAP_DEBUG_FILTER 0x0020
91 #define LDAP_DEBUG_CONFIG 0x0040
92 #define LDAP_DEBUG_ACL 0x0080
93 #define LDAP_DEBUG_STATS 0x0100
94 #define LDAP_DEBUG_STATS2 0x0200
95 #define LDAP_DEBUG_SHELL 0x0400
96 #define LDAP_DEBUG_PARSE 0x0800
97 #define LDAP_DEBUG_CACHE 0x1000
98 #define LDAP_DEBUG_INDEX 0x2000
100 #define LDAP_DEBUG_NONE 0x8000
101 #define LDAP_DEBUG_ANY -1
103 /* debugging stuff */
107 * This is a bogus extern declaration for the compiler. No need to ensure
108 * a 'proper' dllimport.
111 extern int ldap_debug;
112 # endif /* !ldap_debug */
115 extern int ldap_syslog;
116 extern int ldap_syslog_level;
117 # endif /* LDAP_SYSLOG */
119 /* this doesn't below as part of ldap.h */
121 # define Debug( level, fmt, arg1, arg2, arg3 ) \
123 if ( ldap_debug & (level) ) \
124 lutil_debug( ldap_debug, (level), (fmt), (arg1), (arg2), (arg3) ); \
125 if ( ldap_syslog & (level) ) \
126 syslog( ldap_syslog_level, (fmt), (arg1), (arg2), (arg3) ); \
130 # define Debug( level, fmt, arg1, arg2, arg3 ) \
132 if ( ldap_debug & (level) ) \
133 lutil_debug( ldap_debug, (level), (fmt), (arg1), (arg2), (arg3) ); \
137 #else /* LDAP_DEBUG */
138 # define Debug( level, fmt, arg1, arg2, arg3 )
140 #endif /* LDAP_DEBUG */
143 extern int ldap_loglevels[LDAP_SUBSYS_NUM];
147 #define LDAP_LOG(a, b, fmt, arg1, arg2, arg3) do {\
148 if (ldap_loglevels[LDAP_SUBSYS_##a] >= LDAP_LEVEL_##b || \
149 ldap_loglevels[LDAP_SUBSYS_GLOBAL] >= LDAP_LEVEL_##b)\
150 lutil_log (LDAP_SUBSYS_##a, LDAP_LEVEL_##b, fmt, arg1, arg2, arg3); \
154 #define LDAP_LOGS_TEST(a, b) \
155 (ldap_loglevels[LDAP_SUBSYS_##a] >= LDAP_LEVEL_##b || \
156 ldap_loglevels[LDAP_SUBSYS_GLOBAL] >= LDAP_LEVEL_##b)
158 #endif /* LDAP_DEBUG */
160 #endif /* NEW_LOGGING */
163 #define LDAP_LOG(a, b, fmt, arg1, arg2, arg3)
164 #define LDAP_LOGS_TEST(a, b) 0
167 LDAP_LUTIL_F(int) lutil_mnem2level LDAP_P(( const char *level ));
168 LDAP_LUTIL_F(void) lutil_log_initialize LDAP_P((
169 int argc, char **argv ));
170 LDAP_LUTIL_F(int) lutil_set_debug_level LDAP_P((
171 const char *subsys, int level ));
172 LDAP_LUTIL_F(void) lutil_log LDAP_P((
173 const int subsys, int level, const char *fmt, ... ));
175 LDAP_LUTIL_F(int) lutil_debug_file LDAP_P(( FILE *file ));
178 LDAP_LUTIL_F(void) lutil_debug LDAP_P((
179 int debug, int level,
180 const char* fmt, ... )) LDAP_GCCATTR((format(printf, 3, 4)));
184 #endif /* _LDAP_LOG_H */