25 #include <aura/slog.h>
28 #define CLR_NORM "\x1B[0m"
29 #define CLR_RED "\x1B[31m"
30 #define CLR_GREEN "\x1B[32m"
31 #define CLR_YELLOW "\x1B[33m"
32 #define CLR_BLUE "\x1B[34m"
33 #define CLR_NAGENTA "\x1B[35m"
34 #define CLR_CYAN "\x1B[36m"
35 #define CLR_WHITE "\x1B[37m"
36 #define CLR_RESET "\033[0m"
42 static slog_flags slg;
49 void get_system_date(SystemDate *mdate)
54 timeinfo = localtime(&rawtime);
56 memset(mdate, 0x0,
sizeof(*mdate));
60 mdate->year = timeinfo->tm_year+1900;
61 mdate->mon = timeinfo->tm_mon+1;
62 mdate->day = timeinfo->tm_mday;
63 mdate->hour = timeinfo->tm_hour;
64 mdate->min = timeinfo->tm_min;
65 mdate->sec = timeinfo->tm_sec;
75 const char* slog_version(
int min)
77 static char verstr[128];
80 if (min) sprintf(verstr,
"%d.%d.%d",
81 SLOGVERSION_MAX, SLOGVERSION_MIN, SLOGBUILD_NUM);
84 else sprintf(verstr,
"%d.%d build %d (%s)",
85 SLOGVERSION_MAX, SLOGVERSION_MIN, SLOGBUILD_NUM, __DATE__);
97 char* strclr(
int clr,
char* str, ...)
100 static char output[MAXMSG];
106 vsprintf(
string, str, args);
113 sprintf(output,
"%s%s%s", CLR_NORM,
string, CLR_RESET);
116 sprintf(output,
"%s%s%s", CLR_GREEN,
string, CLR_RESET);
119 sprintf(output,
"%s%s%s", CLR_RED,
string, CLR_RESET);
122 sprintf(output,
"%s%s%s", CLR_YELLOW,
string, CLR_RESET);
125 sprintf(output,
"%s%s%s", CLR_BLUE,
string, CLR_RESET);
128 sprintf(output,
"%s%s%s", CLR_NAGENTA,
string, CLR_RESET);
131 sprintf(output,
"%s%s%s", CLR_CYAN,
string, CLR_RESET);
134 sprintf(output,
"%s%s%s", CLR_WHITE,
string, CLR_RESET);
150 void log_to_file(
char *out,
const char *fname, SystemDate *mdate)
153 char filename[PATH_MAX];
156 sprintf(filename,
"%s-%02d-%02d-%02d.log",
157 fname, mdate->year, mdate->mon, mdate->day);
160 FILE *fp = fopen(filename,
"a");
161 if (fp == NULL)
return;
164 fprintf(fp,
"%s", out);
176 char* slog_sprintf(
char *msg, ...)
179 static char output[MAXMSG];
184 get_system_date(&mdate);
189 vsprintf(
string, msg, args);
193 sprintf(output,
"%02d.%02d.%02d-%02d:%02d:%02d - %s",
194 mdate.year, mdate.mon, mdate.day, mdate.hour,
195 mdate.min, mdate.sec,
string);
208 void slogv(
int level,
int flag,
const char *msg, va_list args)
210 if(level > slg.level)
219 get_system_date(&mdate);
222 vsprintf(
string, msg, args);
226 sprintf(prints,
"[LIVE] %s",
string);
229 sprintf(prints,
"[%s] %s", strclr(1,
"INFO"),
string);
232 sprintf(prints,
"[%s] %s", strclr(3,
"WARN"),
string);
235 sprintf(prints,
"[%s] %s", strclr(4,
"DEBUG"),
string);
238 sprintf(prints,
"[%s] %s", strclr(2,
"ERROR"),
string);
241 sprintf(prints,
"[%s] %s", strclr(2,
"FATAL"),
string);
244 sprintf(prints,
"%s",
string);
251 fprintf(stderr,
"%s", slog_sprintf(
"%s\n", prints));
256 output = slog_sprintf(
"%s\n",
string);
257 log_to_file(output, slg.fname, &mdate);
267 void slog(
int level,
int flag,
const char *msg, ...)
271 slogv(level, flag, msg, args);
282 void slog_init(
const char* fname,
int lvl)