summaryrefslogtreecommitdiff
path: root/utils/log.h
diff options
context:
space:
mode:
authorSven Weidauer <sven@5sw.de>2017-12-23 10:55:59 +0100
committerSven Weidauer <sven@5sw.de>2017-12-23 10:55:59 +0100
commitcb452810b98273f1bf3275321386c8393d5c5134 (patch)
treeaf32263647bad0f8573c93fd9e426aeec2a57057 /utils/log.h
parentd0549e7a5b14959097a1e8696dce1b1f40c6ba54 (diff)
parent3c0ff81be45968e1c9d9b989243c975dfeab4cb0 (diff)
downloadnetsurf-cb452810b98273f1bf3275321386c8393d5c5134.tar.gz
netsurf-cb452810b98273f1bf3275321386c8393d5c5134.tar.bz2
Merge remote-tracking branch 'origin/master' into svenw/cocoa
Diffstat (limited to 'utils/log.h')
-rw-r--r--utils/log.h68
1 files changed, 59 insertions, 9 deletions
diff --git a/utils/log.h b/utils/log.h
index 708016b18..b773ec4a2 100644
--- a/utils/log.h
+++ b/utils/log.h
@@ -17,8 +17,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _NETSURF_LOG_H_
-#define _NETSURF_LOG_H_
+#ifndef NETSURF_LOG_H
+#define NETSURF_LOG_H
#include <stdio.h>
#include <stdbool.h>
@@ -43,9 +43,59 @@ typedef bool(nslog_ensure_t)(FILE *fptr);
*/
extern nserror nslog_init(nslog_ensure_t *ensure, int *pargc, char **argv);
-#ifdef NDEBUG
-# define LOG(format, ...) ((void) 0)
-#else
+/**
+ * Shut down the logging system.
+ *
+ * Shuts down the logging subsystem, resetting to verbose logging and output
+ * to stderr. Note, if logging is done after calling this, it will be sent
+ * to stderr without filtering.
+ */
+extern void nslog_finalise(void);
+
+/**
+ * Set the logging filter.
+ *
+ * Compiles and enables the given logging filter.
+ */
+extern nserror nslog_set_filter(const char *filter);
+
+/**
+ * Set the logging filter according to the options.
+ */
+extern nserror nslog_set_filter_by_options(void);
+
+/* ensure a logging level is defined */
+#ifndef NETSURF_LOG_LEVEL
+#define NETSURF_LOG_LEVEL INFO
+#endif
+
+#define NSLOG_LVL(level) NSLOG_LEVEL_ ## level
+#define NSLOG_EVL(level) NSLOG_LVL(level)
+#define NSLOG_COMPILED_MIN_LEVEL NSLOG_EVL(NETSURF_LOG_LEVEL)
+
+#ifdef WITH_NSLOG
+
+#include <nslog/nslog.h>
+
+NSLOG_DECLARE_CATEGORY(netsurf);
+NSLOG_DECLARE_CATEGORY(llcache);
+NSLOG_DECLARE_CATEGORY(fetch);
+NSLOG_DECLARE_CATEGORY(plot);
+NSLOG_DECLARE_CATEGORY(schedule);
+NSLOG_DECLARE_CATEGORY(fbtk);
+NSLOG_DECLARE_CATEGORY(layout);
+
+#else /* WITH_NSLOG */
+
+enum nslog_level {
+ NSLOG_LEVEL_DEEPDEBUG = 0,
+ NSLOG_LEVEL_DEBUG = 1,
+ NSLOG_LEVEL_VERBOSE = 2,
+ NSLOG_LEVEL_INFO = 3,
+ NSLOG_LEVEL_WARNING = 4,
+ NSLOG_LEVEL_ERROR = 5,
+ NSLOG_LEVEL_CRITICAL = 6
+};
extern void nslog_log(const char *file, const char *func, int ln, const char *format, ...) __attribute__ ((format (printf, 4, 5)));
@@ -60,13 +110,13 @@ extern void nslog_log(const char *file, const char *func, int ln, const char *fo
# define LOG_LN __LINE__
# endif
-#define LOG(format, args...) \
+#define NSLOG(catname, level, logmsg, args...) \
do { \
- if (verbose_log) { \
- nslog_log(__FILE__, LOG_FN, LOG_LN, format , ##args); \
+ if (NSLOG_LEVEL_##level >= NSLOG_COMPILED_MIN_LEVEL) { \
+ nslog_log(__FILE__, LOG_FN, LOG_LN, logmsg , ##args); \
} \
} while(0)
-#endif
+#endif /* WITH_NSLOG */
#endif