Set the log level and specify the log stream

APIs used

These two APIs are defined in the header file log.h:

  • hb_log_set_level(): Sets the log output level. The levels are defined in the header file types.h.
  • hb_log_set_stream(): Sets the location of the log output. By default, log messages are sent to stderr.

Code

hb_log_set_level(HBASE_LOG_LEVEL_DEBUG); // defaults to INFO
const char *logFilePath = getenv("HBASE_LOG_FILE");
if (logFilePath != NULL) {
  FILE* logFile = fopen(logFilePath, "a");
  if (!logFile) {
    retCode = errno;
    fprintf(stderr, "Unable to open log file \"%s\"", logFilePath);    
    perror(NULL);
    goto cleanup;
  }
  hb_log_set_stream(logFile); // defaults to stderr
}

Log levels are specified in the header file types.h.

/**
 *  Log levels
 */
typedef enum {
  HBASE_LOG_LEVEL_INVALID = 0,
  HBASE_LOG_LEVEL_FATAL   = 1,
  HBASE_LOG_LEVEL_ERROR   = 2,
  HBASE_LOG_LEVEL_WARN    = 3,
  HBASE_LOG_LEVEL_INFO    = 4,
  HBASE_LOG_LEVEL_DEBUG   = 5,
  HBASE_LOG_LEVEL_TRACE   = 6
} HBaseLogLevel;