diff options
Diffstat (limited to 'LumbrJack/LumbrJack.c')
-rw-r--r-- | LumbrJack/LumbrJack.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/LumbrJack/LumbrJack.c b/LumbrJack/LumbrJack.c new file mode 100644 index 0000000..9760766 --- /dev/null +++ b/LumbrJack/LumbrJack.c | |||
@@ -0,0 +1,82 @@ | |||
1 | /* LumbrJack - a logging library that wraps Eina logging. | ||
2 | |||
3 | */ | ||
4 | |||
5 | |||
6 | #include "LumbrJack.h" | ||
7 | |||
8 | |||
9 | static char dateTime[DATE_TIME_LEN]; | ||
10 | |||
11 | static void _ggg_log_print_cb(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args) | ||
12 | { | ||
13 | FILE *f = data; | ||
14 | char dt[DATE_TIME_LEN + 1]; | ||
15 | char fileTab[256], funcTab[256]; | ||
16 | |||
17 | getDateTime(NULL, dt, NULL); | ||
18 | dt[19] = '\0'; | ||
19 | if (12 > strlen(file)) | ||
20 | snprintf(fileTab, sizeof(fileTab), "%s\t\t", file); | ||
21 | else | ||
22 | snprintf(fileTab, sizeof(fileTab), "%s\t", file); | ||
23 | snprintf(funcTab, sizeof(funcTab), "\t%s", fnc); | ||
24 | fprintf(f, "%s ", dt); | ||
25 | if (f == stderr) | ||
26 | eina_log_print_cb_stderr(d, level, fileTab, funcTab, line, fmt, data, args); | ||
27 | else if (f == stdout) | ||
28 | eina_log_print_cb_stdout(d, level, fileTab, funcTab, line, fmt, data, args); | ||
29 | fflush(f); | ||
30 | } | ||
31 | |||
32 | int loggingStartup(char *name, int logDom) | ||
33 | { | ||
34 | if (logDom < 0) | ||
35 | { | ||
36 | logDom = eina_log_domain_register(name, NULL); | ||
37 | if (logDom < 0) | ||
38 | { | ||
39 | EINA_LOG_CRIT("could not register log domain '%s'", name); | ||
40 | return logDom; | ||
41 | } | ||
42 | } | ||
43 | eina_log_level_set(EINA_LOG_LEVEL_DBG); | ||
44 | eina_log_domain_level_set(name, EINA_LOG_LEVEL_DBG); | ||
45 | eina_log_print_cb_set(_ggg_log_print_cb, stderr); | ||
46 | |||
47 | // Shut up the excess debugging shit from EFL. | ||
48 | eina_log_domain_level_set("eo", EINA_LOG_LEVEL_WARN); | ||
49 | eina_log_domain_level_set("eldbus", EINA_LOG_LEVEL_WARN); | ||
50 | eina_log_domain_level_set("eet", EINA_LOG_LEVEL_WARN); | ||
51 | eina_log_domain_level_set("ecore", EINA_LOG_LEVEL_WARN); | ||
52 | eina_log_domain_level_set("ecore_audio", EINA_LOG_LEVEL_WARN); | ||
53 | eina_log_domain_level_set("ecore_con", EINA_LOG_LEVEL_WARN); | ||
54 | eina_log_domain_level_set("ecore_input_evas", EINA_LOG_LEVEL_WARN); | ||
55 | eina_log_domain_level_set("ecore_input_evas", EINA_LOG_LEVEL_WARN); | ||
56 | eina_log_domain_level_set("ecore_system_upower", EINA_LOG_LEVEL_WARN); | ||
57 | |||
58 | return logDom; | ||
59 | } | ||
60 | |||
61 | char *getDateTime(struct tm **nowOut, char *dateOut, time_t *timeOut) | ||
62 | { | ||
63 | struct tm *newTime; | ||
64 | time_t szClock; | ||
65 | char *date = dateTime; | ||
66 | |||
67 | // Get time in seconds | ||
68 | time(&szClock); | ||
69 | // Convert time to struct tm form | ||
70 | newTime = localtime(&szClock); | ||
71 | |||
72 | if (nowOut) | ||
73 | *nowOut = newTime; | ||
74 | if (dateOut) | ||
75 | date = dateOut; | ||
76 | if (timeOut) | ||
77 | *timeOut = szClock; | ||
78 | |||
79 | // format | ||
80 | strftime(date, DATE_TIME_LEN, "%d/%m/%Y %H:%M:%S\r", newTime); | ||
81 | return (dateTime); | ||
82 | } | ||