* lower level are always reported at higher levels.
*/
enum trace_level {
- TRACE_LEVEL_USER = 0, // info useful to the end user
+ TRACE_LEVEL_ERROR = 0, // only errors
+ TRACE_LEVEL_USER, // also info useful to the end user
TRACE_LEVEL_PROTO, // also report protocol-level updates
TRACE_LEVEL_STATE, // also report state changes
TRACE_LEVEL_DATA, // also report data exchanges
#define TRACE(msg, mask, args...) \
trace(TRACE_LEVEL, (mask), TRACE_SOURCE, ist(TRC_LOC), NULL, TRC_5ARGS(0,##args,0,0,0,0,0), ist(msg))
+#define TRACE_ERROR(msg, mask, args...) \
+ trace(TRACE_LEVEL_ERROR, (mask), TRACE_SOURCE, ist(TRC_LOC), NULL, TRC_5ARGS(0,##args,0,0,0,0,0), ist(msg))
+
#define TRACE_USER(msg, mask, args...) \
trace(TRACE_LEVEL_USER, (mask), TRACE_SOURCE, ist(TRC_LOC), NULL, TRC_5ARGS(0,##args,0,0,0,0,0), ist(msg))
#if defined(DEBUG_DEV) || defined(DEBUG_FULL)
# define DBG_TRACE(msg, mask, args...) TRACE(msg, mask, ##args)
+# define DBG_TRACE_ERROR(msg, mask, args...) TRACE_ERROR(msg, mask, ##args)
# define DBG_TRACE_USER(msg, mask, args...) TRACE_USER(msg, mask, ##args)
# define DBG_TRACE_DATA(msg, mask, args...) TRACE_DATA(msg, mask, ##args)
# define DBG_TRACE_PROTO(msg, mask, args...) TRACE_PROTO(msg, mask, ##args)
# define DBG_TRACE_POINT(mask, args...) TRACE_POINT(mask, ##args)
#else
# define DBG_TRACE(msg, mask, args...) do { /* do nothing */ } while(0)
+# define DBG_TRACE_ERROR(msg, mask, args...) do { /* do nothing */ } while(0)
# define DBG_TRACE_USER(msg, mask, args...) do { /* do nothing */ } while(0)
# define DBG_TRACE_DATA(msg, mask, args...) do { /* do nothing */ } while(0)
# define DBG_TRACE_PROTO(msg, mask, args...) do { /* do nothing */ } while(0)
if (!*name) {
chunk_printf(&trash, "Supported trace levels for source %s:\n", src->name.ptr);
- chunk_appendf(&trash, " %c user : information useful to the end user\n",
+ chunk_appendf(&trash, " %c error : report errors\n",
+ src->level == TRACE_LEVEL_ERROR ? '*' : ' ');
+ chunk_appendf(&trash, " %c user : also information useful to the end user\n",
src->level == TRACE_LEVEL_USER ? '*' : ' ');
chunk_appendf(&trash, " %c proto : also protocol-level updates\n",
src->level == TRACE_LEVEL_PROTO ? '*' : ' ');
return cli_msg(appctx, LOG_WARNING, trash.area);
}
- if (strcmp(name, "user") == 0)
+ if (strcmp(name, "error") == 0)
+ HA_ATOMIC_STORE(&src->level, TRACE_LEVEL_ERROR);
+ else if (strcmp(name, "user") == 0)
HA_ATOMIC_STORE(&src->level, TRACE_LEVEL_USER);
else if (strcmp(name, "proto") == 0)
HA_ATOMIC_STORE(&src->level, TRACE_LEVEL_PROTO);