aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/LumbrJack.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/LumbrJack.c')
-rw-r--r--libraries/LumbrJack.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/libraries/LumbrJack.c b/libraries/LumbrJack.c
new file mode 100644
index 0000000..9760766
--- /dev/null
+++ b/libraries/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
9static char dateTime[DATE_TIME_LEN];
10
11static 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
32int 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
61char *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}