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("");. More...
 
#define E_ERROR(...)   err_msg(ERR_ERROR, FILELINE, __VA_ARGS__)
 Print error message to error log. More...
 
#define E_WARN(...)   err_msg(ERR_WARN, FILELINE, __VA_ARGS__)
 Print warning message to error log. More...
 
#define E_INFO(...)   err_msg(ERR_INFO, FILELINE, __VA_ARGS__)
 Print logging information to standard error stream. More...
 
#define E_INFOCONT(...)   err_msg(ERR_INFOCONT, NULL, 0, __VA_ARGS__)
 Continue printing the information to standard error stream. More...
 
#define E_INFO_NOFN(...)   err_msg(ERR_INFO, NULL, 0, __VA_ARGS__)
 Print logging information without filename. More...
 
#define E_DEBUG(...)
 Debug is disabled by default. More...
 

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

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

◆ E_DEBUG

#define E_DEBUG (   ...)

Debug is disabled by default.

Definition at line 132 of file err.h.

◆ E_ERROR

#define E_ERROR (   ...)    err_msg(ERR_ERROR, FILELINE, __VA_ARGS__)

Print error message to error log.

Definition at line 104 of file err.h.

◆ E_ERROR_SYSTEM

#define E_ERROR_SYSTEM (   ...)    err_msg_system(ERR_ERROR, FILELINE, __VA_ARGS__)

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

Definition at line 99 of file err.h.

◆ E_FATAL

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

◆ E_FATAL_SYSTEM

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

◆ E_INFO

#define E_INFO (   ...)    err_msg(ERR_INFO, FILELINE, __VA_ARGS__)

Print logging information to standard error stream.

Definition at line 114 of file err.h.

◆ E_INFO_NOFN

#define E_INFO_NOFN (   ...)    err_msg(ERR_INFO, NULL, 0, __VA_ARGS__)

Print logging information without filename.

Definition at line 124 of file err.h.

◆ E_INFOCONT

#define E_INFOCONT (   ...)    err_msg(ERR_INFOCONT, NULL, 0, __VA_ARGS__)

Continue printing the information to standard error stream.

Definition at line 119 of file err.h.

◆ E_SYSCALL

#define E_SYSCALL (   stmt,
  ... 
)    if (stmt) E_FATAL_SYSTEM(__VA_ARGS__);

Definition at line 74 of file err.h.

◆ E_WARN

#define E_WARN (   ...)    err_msg(ERR_WARN, FILELINE, __VA_ARGS__)

Print warning message to error log.

Definition at line 109 of file err.h.

◆ FILELINE

#define FILELINE   __FILE__ , __LINE__

Definition at line 76 of file err.h.

Typedef Documentation

◆ err_cb_f

typedef void(* err_cb_f) (void *user_data, err_lvl_t, const char *,...)

Definition at line 154 of file err.h.

Enumeration Type Documentation

◆ err_e

enum err_e

Definition at line 135 of file err.h.

Function Documentation

◆ err_get_logfp()

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 267 of file err.c.

◆ err_logfp_cb()

SPHINXBASE_EXPORT void err_logfp_cb ( void *  user_data,
err_lvl_t  level,
const char *  fmt,
  ... 
)

Definition at line 224 of file err.c.

◆ err_msg()

SPHINXBASE_EXPORT void err_msg ( err_lvl_t  lvl,
const char *  path,
long  ln,
const char *  fmt,
  ... 
)

Definition at line 81 of file err.c.

◆ err_msg_system()

SPHINXBASE_EXPORT void err_msg_system ( err_lvl_t  lvl,
const char *  path,
long  ln,
const char *  fmt,
  ... 
)

Definition at line 158 of file err.c.

◆ err_set_callback()

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 278 of file err.c.

◆ err_set_logfile()

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 240 of file err.c.

◆ 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 254 of file err.c.