GophHub - kevinboone/epub2txt2/src/log.c


Raw File

/*==========================================================================
  epub2txt v2 
  log.c
  Copyright (c)2000-2020 Kevin Boone, GPL v3.0
*==========================================================================*/

#define _GNU_SOURCE 1
#include <syslog.h>
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "log.h"

static int log_level = DEBUG;

/*==========================================================================
log_set_level
*==========================================================================*/
void log_set_level (const int level)
  {
  log_level = level;
  }

/*==========================================================================
log_vprintf
*==========================================================================*/
void log_vprintf (const int level, const char *fmt, va_list ap)
  {
  if (level > log_level) return;
  char *str = NULL;
  vasprintf (&str, fmt, ap);
  const char *levelstr = "ERROR";
  if (level == WARNING)
    levelstr = "WARN";
  else if (level == INFO)
    levelstr = "INFO";
  else if (level == DEBUG)
    levelstr = "DEBUG";
  else if (level == TRACE)
    levelstr = "TRACE";
  fprintf (stderr, APPNAME " %s %s\n", levelstr, str);
  free (str);
  }


/*==========================================================================
log_error
*==========================================================================*/
void log_error (const char *fmt,...)
  {
  va_list ap;
  va_start (ap, fmt);
  log_vprintf (ERROR,  fmt, ap);
  va_end (ap);
  }


/*==========================================================================
log_warning
*==========================================================================*/
void log_warning (const char *fmt,...)
  {
  va_list ap;
  va_start (ap, fmt);
  log_vprintf (WARNING,  fmt, ap);
  va_end (ap);
  }


/*==========================================================================
log_info
*==========================================================================*/
void log_info (const char *fmt,...)
  {
  va_list ap;
  va_start (ap, fmt);
  log_vprintf (INFO,  fmt, ap);
  va_end (ap);
  }


/*==========================================================================
log_debug
*==========================================================================*/
void log_debug (const char *fmt,...)
  {
  va_list ap;
  va_start (ap, fmt);
  log_vprintf (DEBUG,  fmt, ap);
  va_end (ap);
  }


/*==========================================================================
log_trace
*==========================================================================*/
void log_trace (const char *fmt,...)
  {
  va_list ap;
  va_start (ap, fmt);
  log_vprintf (TRACE,  fmt, ap);
  va_end (ap);
  }




Generated by GNU Enscript 1.6.6, and GophHub 1.3.