arguments variables
This commit is contained in:
parent
706e4ef98f
commit
bda435c105
|
@ -53,3 +53,4 @@ Mkfile.old
|
||||||
dkms.conf
|
dkms.conf
|
||||||
|
|
||||||
logger
|
logger
|
||||||
|
*.log
|
||||||
|
|
157
logger.c
157
logger.c
|
@ -1,6 +1,8 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
|
||||||
|
@ -26,86 +28,117 @@ void destroy_logger(Logger logger) {
|
||||||
free(logger);
|
free(logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
void panic(Logger logger, char *str) {
|
void logprint(Logger logger, LogLevel level, char* str, va_list args)
|
||||||
if (PANIC >= logger->level) {
|
{
|
||||||
clock_t t = clock() - logger->t0;
|
clock_t t = clock();
|
||||||
fprintf(stderr, "[PANIC][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
|
||||||
|
|
||||||
if (logger->logfile != NULL)
|
|
||||||
fprintf(logger->logfile, "[PANIC][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void fatal(Logger logger, char *str) {
|
char label[6];
|
||||||
if (FATAL >= logger->level) {
|
switch (level)
|
||||||
clock_t t = clock() - logger->t0;
|
{
|
||||||
fprintf(stderr, "[FATAL][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
case (PANIC):
|
||||||
|
strcpy(label, "PANIC");
|
||||||
if (logger->logfile != NULL)
|
break;
|
||||||
fprintf(logger->logfile, "[FATAL][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
case (FATAL):
|
||||||
|
strcpy(label, "FATAL");
|
||||||
|
break;
|
||||||
|
case (ERROR):
|
||||||
|
strcpy(label, "ERROR");
|
||||||
|
break;
|
||||||
|
case (WARN):
|
||||||
|
strcpy(label, "WARN");
|
||||||
|
break;
|
||||||
|
case (INFO):
|
||||||
|
strcpy(label, "INFO");
|
||||||
|
break;
|
||||||
|
case (DEBUG):
|
||||||
|
strcpy(label, "DEBUG");
|
||||||
|
break;
|
||||||
|
case (TRACE):
|
||||||
|
strcpy(label, "TRACE");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void error(Logger logger, char *str) {
|
FILE* stream = (level >= WARN) ? stderr : stdout;
|
||||||
if (ERROR >= logger->level) {
|
|
||||||
clock_t t = clock() - logger->t0;
|
|
||||||
fprintf(stderr, "[ERROR][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
|
||||||
|
|
||||||
if (logger->logfile != NULL)
|
|
||||||
fprintf(logger->logfile, "[ERROR][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void warn(Logger logger, char *str) {
|
if (level < logger->level)
|
||||||
if (WARN >= logger->level) {
|
return;
|
||||||
clock_t t = clock() - logger->t0;
|
|
||||||
fprintf(stderr, "[WARN][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
fprintf(stream, "[%s][%f]: ", label, (double)t / CLOCKS_PER_SEC);
|
||||||
|
vfprintf(stream, str, args);
|
||||||
if (logger->logfile != NULL)
|
fprintf(stream, "\n");
|
||||||
fprintf(logger->logfile, "[WARN][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
|
||||||
|
if (logger->logfile != NULL)
|
||||||
|
{
|
||||||
|
fprintf(logger->logfile, "[%s][%f]: ", label, (double)t / CLOCKS_PER_SEC);
|
||||||
|
vfprintf(logger->logfile, str, args);
|
||||||
|
fprintf(logger->logfile, "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void info(Logger logger, char *str) {
|
void panic(Logger logger, char *str, ...)
|
||||||
if (INFO >= logger->level) {
|
{
|
||||||
clock_t t = clock() - logger->t0;
|
va_list args;
|
||||||
fprintf(stdout, "[INFO][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
va_start(args, str);
|
||||||
|
logprint(logger, PANIC, str, args);
|
||||||
if (logger->logfile != NULL)
|
va_end(args);
|
||||||
fprintf(logger->logfile, "[INFO][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fatal(Logger logger, char *str, ...)
|
||||||
void debug(Logger logger, char *str) {
|
{
|
||||||
if (DEBUG >= logger->level) {
|
va_list args;
|
||||||
clock_t t = clock() - logger->t0;
|
va_start(args, str);
|
||||||
fprintf(stdout, "[DEBUG][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
logprint(logger, FATAL, str, args);
|
||||||
|
va_end(args);
|
||||||
if (logger->logfile != NULL)
|
|
||||||
fprintf(logger->logfile, "[DEBUG][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void error(Logger logger, char *str, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, str);
|
||||||
|
logprint(logger, ERROR, str, args);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
void trace(Logger logger, char *str) {
|
void warn(Logger logger, char *str, ...)
|
||||||
if (TRACE >= logger->level) {
|
{
|
||||||
clock_t t = clock() - logger->t0;
|
va_list args;
|
||||||
fprintf(stdout, "[TRACE][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
va_start(args, str);
|
||||||
|
logprint(logger, WARN, str, args);
|
||||||
if (logger->logfile != NULL)
|
va_end(args);
|
||||||
fprintf(logger->logfile, "[TRACE][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
}
|
||||||
}
|
|
||||||
|
void info(Logger logger, char *str, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, str);
|
||||||
|
logprint(logger, INFO, str, args);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void debug(Logger logger, char *str, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, str);
|
||||||
|
logprint(logger, DEBUG, str, args);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void trace(Logger logger, char *str, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, str);
|
||||||
|
logprint(logger, TRACE, str, args);
|
||||||
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
Logger logger = create_logger("logger.log", INFO);
|
Logger logger = create_logger("logger.log", WARN);
|
||||||
|
|
||||||
trace(logger, "Le vent fait un peu de bruit.");
|
warn(logger, "Ceci est un warn de test %f", 1.6*2.5);
|
||||||
panic(logger, "On m'a assassiné.");
|
trace(logger, "Ceci est un trace de test %f", 1.6*2.5);
|
||||||
|
|
||||||
return 0;
|
destroy_logger(logger);
|
||||||
}
|
}
|
||||||
|
|
19
logger.h
19
logger.h
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef LOGGER_H_INCLUDED
|
||||||
|
#define LOGGER_H_INCLUDED
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
@ -25,10 +28,12 @@ typedef struct Logger* Logger;
|
||||||
Logger create_logger(char *logpath, LogLevel level);
|
Logger create_logger(char *logpath, LogLevel level);
|
||||||
void destroy_logger(Logger logger);
|
void destroy_logger(Logger logger);
|
||||||
|
|
||||||
void panic(Logger logger, char *str);
|
void panic(Logger logger, char *str, ...);
|
||||||
void fatal(Logger logger, char *str);
|
void fatal(Logger logger, char *str, ...);
|
||||||
void error(Logger logger, char *str);
|
void error(Logger logger, char *str, ...);
|
||||||
void warn(Logger logger, char *str);
|
void warn(Logger logger, char *str, ...);
|
||||||
void info(Logger logger, char *str);
|
void info(Logger logger, char *str, ...);
|
||||||
void debug(Logger logger, char *str);
|
void debug(Logger logger, char *str, ...);
|
||||||
void trace(Logger logger, char *str);
|
void trace(Logger logger, char *str, ...);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
[PANIC][0.000098]: On m'a assassiné.
|
|
Loading…
Reference in New Issue