diff options
Diffstat (limited to 'libdaemon/server/daemon-server.h')
-rw-r--r-- | libdaemon/server/daemon-server.h | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/libdaemon/server/daemon-server.h b/libdaemon/server/daemon-server.h index 104dac17..df7ed8e0 100644 --- a/libdaemon/server/daemon-server.h +++ b/libdaemon/server/daemon-server.h @@ -64,6 +64,12 @@ static inline const char *daemon_request_str(request r, const char *path, const */ typedef response (*handle_request)(struct daemon_state s, client_handle h, request r); +typedef struct { + uint32_t log_config[32]; + void *backend_state[32]; + const char *name; +} log_state; + typedef struct daemon_state { /* * The maximal stack size for individual daemon threads. This is @@ -81,7 +87,6 @@ typedef struct daemon_state { const char *protocol; int protocol_version; - int log_level; handle_request handler; int (*daemon_init)(struct daemon_state *st); int (*daemon_fini)(struct daemon_state *st); @@ -89,6 +94,7 @@ typedef struct daemon_state { /* Global runtime info maintained by the framework. */ int socket_fd; + log_state *log; void *private; /* the global daemon state */ } daemon_state; @@ -119,4 +125,34 @@ daemon_reply daemon_takeover(daemon_info i, daemon_request r); /* Call this to request a clean shutdown of the daemon. Async safe. */ void daemon_stop(void); +enum { DAEMON_LOG_OUTLET_SYSLOG = 1, + DAEMON_LOG_OUTLET_STDERR = 2, + DAEMON_LOG_OUTLET_SOCKET = 4 }; + +/* Log a message of a given type. */ +void daemon_log(log_state *s, int type, const char *message); + +/* Log a config (sub)tree, using a given message type, each line prefixed with "prefix". */ +void daemon_log_cft(log_state *s, int type, const char *prefix, + const struct dm_config_node *n); + +/* Log a multi-line block, prefixing each line with "prefix". */ +void daemon_log_multi(log_state *s, int type, const char *prefix, const char *message); + +/* Log a formatted message as "type". See also daemon-log.h. */ +void daemon_logf(log_state *s, int type, const char *format, ...); + +/* + * Configure log_state to send messages of type "type" to the log outlet + * "outlet", iff "enable" is true. + */ +void daemon_log_enable(log_state *s, int outlet, int type, int enable); + +/* + * Set up logging on a given outlet using a list of message types (comma + * separated) to log using that outlet. The list is expected to look like this, + * "info,wire,debug". Returns 0 upon encountering an unknown message type. + */ +int daemon_log_parse(log_state *s, int outlet, const char *types, int enable); + #endif |