Ajout des fichiers
This commit is contained in:
parent
11bd0fbddd
commit
706e4ef98f
|
@ -52,3 +52,4 @@ Module.symvers
|
||||||
Mkfile.old
|
Mkfile.old
|
||||||
dkms.conf
|
dkms.conf
|
||||||
|
|
||||||
|
logger
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
CC=gcc
|
||||||
|
FLAGS=-Wall -Wextra -Wpedantic -g
|
||||||
|
|
||||||
|
logger: logger.c
|
||||||
|
$(CC) $(FLAGS) -o $@ $^
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
|
||||||
|
clean: logger
|
||||||
|
rm logger
|
|
@ -0,0 +1,111 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#include "logger.h"
|
||||||
|
|
||||||
|
Logger create_logger(char* logpath, LogLevel level) {
|
||||||
|
Logger logger = malloc(sizeof(*logger));
|
||||||
|
|
||||||
|
logger->t0 = clock();
|
||||||
|
logger->level = level;
|
||||||
|
|
||||||
|
if (logpath[0] != '\0')
|
||||||
|
{
|
||||||
|
logger->logfile = fopen(logpath, "w");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
logger->logfile = NULL;
|
||||||
|
|
||||||
|
return logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
void destroy_logger(Logger logger) {
|
||||||
|
if (logger->logfile != NULL)
|
||||||
|
fclose(logger->logfile);
|
||||||
|
free(logger);
|
||||||
|
}
|
||||||
|
|
||||||
|
void panic(Logger logger, char *str) {
|
||||||
|
if (PANIC >= logger->level) {
|
||||||
|
clock_t t = clock() - logger->t0;
|
||||||
|
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) {
|
||||||
|
if (FATAL >= logger->level) {
|
||||||
|
clock_t t = clock() - logger->t0;
|
||||||
|
fprintf(stderr, "[FATAL][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
|
||||||
|
if (logger->logfile != NULL)
|
||||||
|
fprintf(logger->logfile, "[FATAL][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void error(Logger logger, char *str) {
|
||||||
|
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 (WARN >= logger->level) {
|
||||||
|
clock_t t = clock() - logger->t0;
|
||||||
|
fprintf(stderr, "[WARN][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
|
||||||
|
if (logger->logfile != NULL)
|
||||||
|
fprintf(logger->logfile, "[WARN][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void info(Logger logger, char *str) {
|
||||||
|
if (INFO >= logger->level) {
|
||||||
|
clock_t t = clock() - logger->t0;
|
||||||
|
fprintf(stdout, "[INFO][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
|
||||||
|
if (logger->logfile != NULL)
|
||||||
|
fprintf(logger->logfile, "[INFO][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void debug(Logger logger, char *str) {
|
||||||
|
if (DEBUG >= logger->level) {
|
||||||
|
clock_t t = clock() - logger->t0;
|
||||||
|
fprintf(stdout, "[DEBUG][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
|
||||||
|
if (logger->logfile != NULL)
|
||||||
|
fprintf(logger->logfile, "[DEBUG][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void trace(Logger logger, char *str) {
|
||||||
|
if (TRACE >= logger->level) {
|
||||||
|
clock_t t = clock() - logger->t0;
|
||||||
|
fprintf(stdout, "[TRACE][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
|
||||||
|
if (logger->logfile != NULL)
|
||||||
|
fprintf(logger->logfile, "[TRACE][%f]: %s\n", (double)t / CLOCKS_PER_SEC, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Logger logger = create_logger("logger.log", INFO);
|
||||||
|
|
||||||
|
trace(logger, "Le vent fait un peu de bruit.");
|
||||||
|
panic(logger, "On m'a assassiné.");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
|
enum LogLevel {
|
||||||
|
PANIC=6,
|
||||||
|
FATAL=5,
|
||||||
|
ERROR=4,
|
||||||
|
WARN=3,
|
||||||
|
INFO=2,
|
||||||
|
DEBUG=1,
|
||||||
|
TRACE=0
|
||||||
|
};
|
||||||
|
typedef enum LogLevel LogLevel;
|
||||||
|
|
||||||
|
struct Logger {
|
||||||
|
clock_t t0;
|
||||||
|
LogLevel level;
|
||||||
|
FILE* logfile;
|
||||||
|
};
|
||||||
|
typedef struct Logger* Logger;
|
||||||
|
|
||||||
|
|
||||||
|
Logger create_logger(char *logpath, LogLevel level);
|
||||||
|
void destroy_logger(Logger logger);
|
||||||
|
|
||||||
|
void panic(Logger logger, char *str);
|
||||||
|
void fatal(Logger logger, char *str);
|
||||||
|
void error(Logger logger, char *str);
|
||||||
|
void warn(Logger logger, char *str);
|
||||||
|
void info(Logger logger, char *str);
|
||||||
|
void debug(Logger logger, char *str);
|
||||||
|
void trace(Logger logger, char *str);
|
|
@ -0,0 +1 @@
|
||||||
|
[PANIC][0.000098]: On m'a assassiné.
|
Loading…
Reference in New Issue