SphinxBase  5prealpha
err.h File Reference

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...
 

Detailed Description

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.

Macro Definition Documentation

#define E_DEBUG (   level,
 
)

Print debugging information to standard error stream.

This will only print a message if:

  1. Debugging is enabled at compile time
  2. The debug level is greater than or equal to level

Note that for portability reasons the format and arguments must be enclosed in an extra set of parentheses.

Definition at line 144 of file err.h.

#define E_FATAL (   ...)
Value:
do { \
err_msg(ERR_FATAL, FILELINE, __VA_ARGS__); \
exit(EXIT_FAILURE); \
} while (0)

Exit with non-zero status after error message.

Definition at line 81 of file err.h.

Referenced by __ckd_calloc_4d__(), agc_type_from_str(), bio_fread_1d(), bio_verify_chksum(), cmn_live(), cmn_type_from_str(), determinant(), feat_init(), feat_read_lda(), fopen_comp(), invert(), parse_subvecs(), and solve().

#define E_FATAL_SYSTEM (   ...)
Value:
do { \
err_msg_system(ERR_FATAL, FILELINE, __VA_ARGS__); \
exit(EXIT_FAILURE); \
} while (0)

Print error text; Call perror(""); exit(errno);.

Definition at line 90 of file err.h.

Referenced by bio_read_wavfile().

Function Documentation

SPHINXBASE_EXPORT int err_get_debug_level ( void  )

Get debugging verbosity level.

Note that debugging messages are only enabled when compiled with -DDEBUG.

Definition at line 287 of file err.c.

SPHINXBASE_EXPORT FILE* err_get_logfp ( void  )

Get the current logging filehandle.

Returns
Current logging filehandle, NULL if logging is disabled. Initially it returns stderr

Definition at line 268 of file err.c.

Referenced by cmd_ln_parse_r(), and err_set_logfile().

SPHINXBASE_EXPORT void err_set_callback ( err_cb_f  callback,
void *  user_data 
)

Sets function to output error messages.

Use it to redirect the logging to your application. By default the handler which dumps messages to stderr is set.

Parameters
callbackcallback to pass messages too
user_datadata to pass to callback

Definition at line 293 of file err.c.

SPHINXBASE_EXPORT int err_set_debug_level ( int  level)

Set debugging verbosity level.

Note that debugging messages are only enabled when compiled with -DDEBUG.

Parameters
levelVerbosity level to set, or 0 to disable debug messages.

Definition at line 279 of file err.c.

SPHINXBASE_EXPORT int err_set_logfile ( const char *  path)

Append all log messages to a given file.

Previous logging filehandle is closed (unless it was stdout or stderr).

Parameters
pathFile path to send log messages to
Returns
0 for success, <0 for failure (e.g. if file does not exist)

Definition at line 241 of file err.c.

References err_get_logfp(), and err_set_logfp().

SPHINXBASE_EXPORT void err_set_logfp ( FILE *  stream)

Direct all logging to a given filehandle if default logfp callback is set.

Parameters
streamFilehandle to send log messages to, or NULL to disable logging.

Definition at line 255 of file err.c.

Referenced by err_set_logfile().