SphinxBase
5prealpha
|
Implementation of logging routines. More...
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sphinxbase/sphinxbase_export.h>
Go to the source code of this file.
Macros | |
#define | E_SYSCALL(stmt, ...) if (stmt) E_FATAL_SYSTEM(__VA_ARGS__); |
#define | FILELINE __FILE__ , __LINE__ |
#define | E_FATAL(...) |
Exit with non-zero status after error message. More... | |
#define | E_FATAL_SYSTEM(...) |
Print error text; Call perror(""); exit(errno);. More... | |
#define | E_ERROR_SYSTEM(...) err_msg_system(ERR_ERROR, FILELINE, __VA_ARGS__) |
Print error text; Call perror("");. | |
#define | E_ERROR(...) err_msg(ERR_ERROR, FILELINE, __VA_ARGS__) |
Print error message to error log. | |
#define | E_WARN(...) err_msg(ERR_WARN, FILELINE, __VA_ARGS__) |
Print warning message to error log. | |
#define | E_INFO(...) err_msg(ERR_INFO, FILELINE, __VA_ARGS__) |
Print logging information to standard error stream. | |
#define | E_INFOCONT(...) err_msg(ERR_INFOCONT, NULL, 0, __VA_ARGS__) |
Continue printing the information to standard error stream. | |
#define | E_INFO_NOFN(...) err_msg(ERR_INFO, NULL, 0, __VA_ARGS__) |
Print logging information without filename. | |
#define | E_DEBUG(level, x) |
Print debugging information to standard error stream. More... | |
#define | E_DEBUGCONT(level, x) |
Typedefs | |
typedef enum err_e | err_lvl_t |
typedef void(* | err_cb_f) (void *user_data, err_lvl_t, const char *,...) |
Enumerations | |
enum | err_e { ERR_DEBUG, ERR_INFO, ERR_INFOCONT, ERR_WARN, ERR_ERROR, ERR_FATAL, ERR_MAX } |
Functions | |
SPHINXBASE_EXPORT void | err_msg (err_lvl_t lvl, const char *path, long ln, const char *fmt,...) |
SPHINXBASE_EXPORT void | err_msg_system (err_lvl_t lvl, const char *path, long ln, const char *fmt,...) |
SPHINXBASE_EXPORT void | err_logfp_cb (void *user_data, err_lvl_t level, const char *fmt,...) |
SPHINXBASE_EXPORT void | err_set_callback (err_cb_f callback, void *user_data) |
Sets function to output error messages. More... | |
SPHINXBASE_EXPORT void | err_set_logfp (FILE *stream) |
Direct all logging to a given filehandle if default logfp callback is set. More... | |
SPHINXBASE_EXPORT FILE * | err_get_logfp (void) |
Get the current logging filehandle. More... | |
SPHINXBASE_EXPORT int | err_set_logfile (const char *path) |
Append all log messages to a given file. More... | |
SPHINXBASE_EXPORT int | err_set_debug_level (int level) |
Set debugging verbosity level. More... | |
SPHINXBASE_EXPORT int | err_get_debug_level (void) |
Get debugging verbosity level. More... | |
Implementation of logging routines.
Logging, warning, debug and error message output funtionality is provided in this file. Sphinxbase defines several level of logging messages - INFO, WARNING, ERROR, FATAL. By default output goes to standard error output.
Logging is implemented through macros. They take same arguments as printf: format string and values. By default source file name and source line are prepended to the message. Log output could be redirected to any file using err_set_logfp() and err_set_logfile() functions. To disable logging in your application, call err_set_logfp(NULL).
It's possible to log multiline info messages, to do that you need to start message with E_INFO and output other lines with E_INFOCONT.
Definition in file err.h.
#define E_DEBUG | ( | level, | |
x | |||
) |
Print debugging information to standard error stream.
This will only print a message if:
Note that for portability reasons the format and arguments must be enclosed in an extra set of parentheses.
#define E_FATAL | ( | ... | ) |
#define E_FATAL_SYSTEM | ( | ... | ) |
SPHINXBASE_EXPORT int err_get_debug_level | ( | void | ) |
SPHINXBASE_EXPORT FILE* err_get_logfp | ( | void | ) |
SPHINXBASE_EXPORT void err_set_callback | ( | err_cb_f | callback, |
void * | user_data | ||
) |
SPHINXBASE_EXPORT int err_set_debug_level | ( | int | level | ) |
SPHINXBASE_EXPORT int err_set_logfile | ( | const char * | path | ) |