summaryrefslogtreecommitdiff
path: root/include/nslog/nslog.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/nslog/nslog.h')
-rw-r--r--include/nslog/nslog.h82
1 files changed, 60 insertions, 22 deletions
diff --git a/include/nslog/nslog.h b/include/nslog/nslog.h
index ffa87bd..550bffb 100644
--- a/include/nslog/nslog.h
+++ b/include/nslog/nslog.h
@@ -4,7 +4,7 @@
* This file is part of libnslog.
*
* Licensed under the MIT License,
- * http://www.opensource.org/licenses/mit-license.php
+ * http://www.opensource.org/licenses/mit-license.php
*/
/**
@@ -18,41 +18,44 @@
#include <stdarg.h>
typedef enum {
- 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,
+ 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,
} nslog_level;
const char *nslog_level_name(nslog_level level);
-#define NSLOG_LEVEL_DD NSLOG_LEVEL_DEEPDEBUG
-#define NSLOG_LEVEL_CHAT NSLOG_LEVEL_VERBOSE
-#define NSLOG_LEVEL_WARN NSLOG_LEVEL_WARNING
-#define NSLOG_LEVEL_ERR NSLOG_LEVEL_ERROR
-#define NSLOG_LEVEL_CRIT NSLOG_LEVEL_CRITICAL
+#define NSLOG_LEVEL_DD NSLOG_LEVEL_DEEPDEBUG
+#define NSLOG_LEVEL_CHAT NSLOG_LEVEL_VERBOSE
+#define NSLOG_LEVEL_WARN NSLOG_LEVEL_WARNING
+#define NSLOG_LEVEL_ERR NSLOG_LEVEL_ERROR
+#define NSLOG_LEVEL_CRIT NSLOG_LEVEL_CRITICAL
#ifndef NSLOG_COMPILED_MIN_LEVEL
#define NSLOG_COMPILED_MIN_LEVEL NSLOG_LEVEL_DEBUG
#endif
typedef struct nslog_category_s {
- const char *cat_name;
- const char *description;
- struct nslog_category_s *parent;
- char *name;
- struct nslog_category_s *next;
+ const char *cat_name;
+ const char *description;
+ struct nslog_category_s *parent;
+ char *name;
+ int namelen;
+ struct nslog_category_s *next;
} nslog_category_t;
typedef struct nslog_entry_context_s {
- nslog_category_t *category;
- nslog_level level;
- const char *filename;
+ nslog_category_t *category;
+ nslog_level level;
+ const char *filename;
+ int filenamelen;
const char *funcname;
- int lineno;
+ int funcnamelen;
+ int lineno;
} nslog_entry_context_t;
#define NSLOG_DECLARE_CATEGORY(catname) \
@@ -64,6 +67,7 @@ typedef struct nslog_entry_context_s {
description, \
NULL, \
NULL, \
+ 0, \
NULL, \
}
@@ -73,6 +77,7 @@ typedef struct nslog_entry_context_s {
description, \
&__nslog_category_##parentcatname, \
NULL, \
+ 0, \
NULL, \
}
@@ -83,7 +88,9 @@ typedef struct nslog_entry_context_s {
&__nslog_category_##catname, \
NSLOG_LEVEL_##level, \
__FILE__, \
+ sizeof(__FILE__) - 1, \
__PRETTY_FUNCTION__, \
+ sizeof(__PRETTY_FUNCTION__) - 1, \
__LINE__, \
}; \
nslog__log(&ctx, logmsg, ##args); \
@@ -106,4 +113,35 @@ nslog_error nslog_set_render_callback(nslog_callback cb, void *context);
nslog_error nslog_uncork(void);
+typedef struct nslog_filter_s nslog_filter_t;
+
+nslog_error nslog_filter_category_new(const char *catname,
+ nslog_filter_t **filter);
+nslog_error nslog_filter_level_new(nslog_level level,
+ nslog_filter_t **filter);
+nslog_error nslog_filter_filename_new(const char *filename,
+ nslog_filter_t **filter);
+nslog_error nslog_filter_dirname_new(const char *dirname,
+ nslog_filter_t **filter);
+nslog_error nslog_filter_funcname_new(const char *funcname,
+ nslog_filter_t **filter);
+
+nslog_error nslog_filter_and_new(nslog_filter_t *left,
+ nslog_filter_t *right,
+ nslog_filter_t **filter);
+nslog_error nslog_filter_or_new(nslog_filter_t *left,
+ nslog_filter_t *right,
+ nslog_filter_t **filter);
+nslog_error nslog_filter_xor_new(nslog_filter_t *left,
+ nslog_filter_t *right,
+ nslog_filter_t **filter);
+nslog_error nslog_filter_not_new(nslog_filter_t *input,
+ nslog_filter_t **filter);
+
+nslog_filter_t *nslog_filter_ref(nslog_filter_t *filter);
+nslog_filter_t *nslog_filter_unref(nslog_filter_t *filter);
+
+nslog_error nslog_filter_set_active(nslog_filter_t *filter,
+ nslog_filter_t **prev);
+
#endif /* NSLOG_NSLOG_H_ */