30 #include <gwenhywfar/gwenhywfarapi.h> 31 #include <gwenhywfar/misc.h> 32 #include <gwenhywfar/buffer.h> 33 #include <gwenhywfar/gui.h> 69 s=getenv(
"GWEN_LOGLEVEL");
83 GWEN_LOGGER_DOMAIN *ld;
96 GWEN_LOGGER_DOMAIN *ld;
100 ld->name=strdup(name);
118 GWEN_LOGGER_DOMAIN *ld;
123 if (strcasecmp(ld->name, name)==0)
151 GWEN_LOGGER_DOMAIN *ld;
188 if (--(lg->usage)==0) {
216 #ifndef NO_DEPRECATED_SYMBOLS 219 fprintf(stderr,
"GWEN_Logger_SetDefaultLogger: Deprecated function\n");
221 #endif // ifndef NO_DEPRECATED_SYMBOLS 245 fprintf(stderr,
"LOGGER: No filename given, will log to console.\n");
320 GWEN_LOGGER_DOMAIN *ld;
326 return ld->logger->open;
346 if (strlen(lg->logIdent)+32>=
sizeof(buffer)) {
347 fprintf(stderr,
" LOGGER: Logbuffer too small (1).\n");
356 # ifdef HAVE_SNPRINTF 358 i=snprintf(buffer,
sizeof(buffer)-1,
359 "%d:%04d/%02d/%02d %02d-%02d-%02d:%s(%d):", priority,
360 t->tm_year+1900, t->tm_mon+1, t->tm_mday,
361 t->tm_hour, t->tm_min, t->tm_sec,
362 lg->logIdent, (
int)getpid());
364 i=snprintf(buffer,
sizeof(buffer)-1,
365 "%d:%04d/%02d/%02d %02d-%02d-%02d:%s:", priority,
366 t->tm_year+1900, t->tm_mon+1, t->tm_mday,
367 t->tm_hour, t->tm_min, t->tm_sec,
370 if (i>=
sizeof(buffer)) {
371 fprintf(stderr,
" LOGGER: Logbuffer too small (2).\n");
376 sprintf(buffer,
"%d:%04d/%02d/%02d %02d-%02d-%02d:%s(%d):", priority,
377 t->tm_year+1900, t->tm_mon+1, t->tm_mday,
378 t->tm_hour, t->tm_min, t->tm_sec,
379 lg->logIdent, (
int)getpid());
381 sprintf(buffer,
"%d:%04d/%02d/%02d %02d-%02d-%02d:%s:", priority,
382 t->tm_year+1900, t->tm_mon+1, t->tm_mday,
383 t->tm_hour, t->tm_min, t->tm_sec,
388 # ifdef HAVE_SNPRINTF 389 buffer[
sizeof(buffer)-1]=0;
390 i=snprintf(buffer,
sizeof(buffer)-1,
393 if (i>=
sizeof(buffer)) {
394 fprintf(stderr,
" LOGGER: Logbuffer too small (3).\n");
398 sprintf(buffer,
"%d:%s:", priority,
436 if (priority>lg->logLevel)
441 switch (lg->logType) {
449 f=fopen(lg->logFile,
"a+");
452 "LOGGER: Unable to open file \"%s\" (%s)\n",
463 "LOGGER: Unable to write to file \"%s\" (%s)\n",
473 "LOGGER: Unable to close file \"%s\" (%s)\n",
514 syslog(pri,
"%s", s);
519 if (lg->logFunction==0) {
521 "LOGGER: Logtype is \"Function\", but no function is set.\n");
569 if (priority>lg->logLevel)
577 for (i=0; i<strlen(s)+1; i++) {
659 lg->logIdent=strdup(
id);
661 lg->logIdent=strdup(
"No ident, please adjust your program");
675 lg->logFile=strdup(name);
677 lg->logFile=strdup(
"");
690 oldFn=lg->logFunction;
699 if (strcasecmp(name,
"emergency")==0)
701 else if (strcasecmp(name,
"alert")==0)
703 else if (strcasecmp(name,
"critical")==0)
705 else if (strcasecmp(name,
"error")==0)
707 else if (strcasecmp(name,
"warning")==0)
709 else if (strcasecmp(name,
"notice")==0)
711 else if (strcasecmp(name,
"info")==0)
713 else if (strcasecmp(name,
"debug")==0)
715 else if (strcasecmp(name,
"verbous")==0 || strcasecmp(name,
"verbose")==0)
769 if (strcasecmp(name,
"console")==0)
771 else if (strcasecmp(name,
"file")==0)
773 else if (strcasecmp(name,
"syslog")==0)
775 else if (strcasecmp(name,
"function")==0)
void GWEN_Logger_SetDefaultLogger(GWEN_UNUSED GWEN_LOGGER *lg)
void GWEN_Logger_AddLogger(GWEN_LOGGER *oldLogger, GWEN_LOGGER *newLogger)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
void GWENHYWFAR_CB(* GWEN_LOGGERFUNCTIONLOG)(const char *s)
GWENHYWFAR_API int GWEN_Gui_LogHook(const char *logDomain, GWEN_LOGGER_LEVEL priority, const char *s)
uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
void GWEN_Logger_Attach(GWEN_LOGGER *lg)
void GWEN_Logger_SetLevel(const char *logDomain, GWEN_LOGGER_LEVEL l)
GWEN_LOGGER_DOMAIN * GWEN_LoggerDomain_Find(const char *name)
GWEN_LOGGERFUNCTIONLOG GWEN_Logger_SetLogFunction(const char *logDomain, GWEN_LOGGERFUNCTIONLOG fn)
#define GWEN_FREE_OBJECT(varname)
const char * GWEN_Logger_Logtype2Name(GWEN_LOGGER_LOGTYPE lt)
int GWEN_Logger_CreateLogMessage(const char *logDomain, GWEN_LOGGER_LEVEL priority, const char *s, GWEN_BUFFER *mbuf)
int GWEN_Logger_IsEnabled(const char *logDomain)
GWEN_LOGGER_LEVEL GWEN_Logger_Name2Level(const char *name)
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
#define GWEN_LIST_DEL(typ, sr, head)
GWEN_LOGGER_DOMAIN * GWEN_LoggerDomain_new(const char *name)
int GWEN_Logger_ModuleFini(void)
GWEN_LOGGER * GWEN_Logger_new(GWEN_LOGGER_DOMAIN *domain)
const char * GWEN_Logger_Level2Name(GWEN_LOGGER_LEVEL level)
int GWEN_Logger__CreateMessage(GWEN_LOGGER *lg, GWEN_LOGGER_LEVEL priority, const char *s, GWEN_BUFFER *mbuf)
#define GWEN_NEW_OBJECT(typ, varname)
void GWEN_Logger_Log(const char *logDomain, GWEN_LOGGER_LEVEL priority, const char *s)
int GWEN_Logger_Exists(const char *logDomain)
void GWEN_Logger_SetFilename(const char *logDomain, const char *name)
int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
GWEN_LOGGER * GWEN_LoggerDomain_GetLogger(const char *name)
GWEN_LOGGER_LOGTYPE GWEN_Logger_Name2Logtype(const char *name)
int GWEN_Logger_Open(const char *logDomain, const char *ident, const char *file, GWEN_LOGGER_LOGTYPE logtype, GWEN_LOGGER_FACILITY facility)
#define GWEN_LIST_INSERT(typ, sr, head)
void GWEN_Logger_Enable(const char *logDomain, int f)
void GWEN_Logger_free(GWEN_LOGGER *lg)
int GWEN_Logger_IsOpen(const char *logDomain)
void GWEN_LoggerDomain_Del(GWEN_LOGGER_DOMAIN *ld)
void GWEN_LoggerDomain_free(GWEN_LOGGER_DOMAIN *ld)
int GWEN_Logger__Log(GWEN_LOGGER *lg, GWEN_LOGGER_LEVEL priority, const char *s)
static GWEN_LOGGER_DOMAIN * gwen_loggerdomains
int GWEN_Logger_GetLevel(const char *logDomain)
#define GWEN_LIST_ADD(typ, sr, head)
void GWEN_LoggerDomain_Add(GWEN_LOGGER_DOMAIN *ld)
void GWEN_Logger_Close(const char *logDomain)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
int GWEN_Logger_ModuleInit(void)
void GWEN_Logger_SetIdent(const char *logDomain, const char *id)