GophHub - kevinboone/epub2txt2/src/log.c


Raw File

    1	/*==========================================================================
    2	  epub2txt v2 
    3	  log.c
    4	  Copyright (c)2000-2020 Kevin Boone, GPL v3.0
    5	*==========================================================================*/
    6	
    7	#define _GNU_SOURCE 1
    8	#include <syslog.h>
    9	#include <stdio.h>
   10	#include <stdbool.h>
   11	#include <unistd.h>
   12	#include <stdlib.h>
   13	#include <string.h>
   14	#include <stdarg.h>
   15	#include "log.h"
   16	
   17	static int log_level = DEBUG;
   18	
   19	/*==========================================================================
   20	log_set_level
   21	*==========================================================================*/
   22	void log_set_level (const int level)
   23	  {
   24	  log_level = level;
   25	  }
   26	
   27	/*==========================================================================
   28	log_vprintf
   29	*==========================================================================*/
   30	void log_vprintf (const int level, const char *fmt, va_list ap)
   31	  {
   32	  if (level > log_level) return;
   33	  char *str = NULL;
   34	  vasprintf (&str, fmt, ap);
   35	  const char *levelstr = "ERROR";
   36	  if (level == WARNING)
   37	    levelstr = "WARN";
   38	  else if (level == INFO)
   39	    levelstr = "INFO";
   40	  else if (level == DEBUG)
   41	    levelstr = "DEBUG";
   42	  else if (level == TRACE)
   43	    levelstr = "TRACE";
   44	  fprintf (stderr, APPNAME " %s %s\n", levelstr, str);
   45	  free (str);
   46	  }
   47	
   48	
   49	/*==========================================================================
   50	log_error
   51	*==========================================================================*/
   52	void log_error (const char *fmt,...)
   53	  {
   54	  va_list ap;
   55	  va_start (ap, fmt);
   56	  log_vprintf (ERROR,  fmt, ap);
   57	  va_end (ap);
   58	  }
   59	
   60	
   61	/*==========================================================================
   62	log_warning
   63	*==========================================================================*/
   64	void log_warning (const char *fmt,...)
   65	  {
   66	  va_list ap;
   67	  va_start (ap, fmt);
   68	  log_vprintf (WARNING,  fmt, ap);
   69	  va_end (ap);
   70	  }
   71	
   72	
   73	/*==========================================================================
   74	log_info
   75	*==========================================================================*/
   76	void log_info (const char *fmt,...)
   77	  {
   78	  va_list ap;
   79	  va_start (ap, fmt);
   80	  log_vprintf (INFO,  fmt, ap);
   81	  va_end (ap);
   82	  }
   83	
   84	
   85	/*==========================================================================
   86	log_debug
   87	*==========================================================================*/
   88	void log_debug (const char *fmt,...)
   89	  {
   90	  va_list ap;
   91	  va_start (ap, fmt);
   92	  log_vprintf (DEBUG,  fmt, ap);
   93	  va_end (ap);
   94	  }
   95	
   96	
   97	/*==========================================================================
   98	log_trace
   99	*==========================================================================*/
  100	void log_trace (const char *fmt,...)
  101	  {
  102	  va_list ap;
  103	  va_start (ap, fmt);
  104	  log_vprintf (TRACE,  fmt, ap);
  105	  va_end (ap);
  106	  }
  107	
  108	
  109	
  110	

Generated by GNU Enscript 1.6.6, and GophHub 1.3.