1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#include "pn_log.h"
#include "pn_printf.h"
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <glib.h>
static inline char log_level_to_char(unsigned level)
{
switch (level) {
case 0: return 'E';
case 1: return 'W';
case 2: return 'T';
case 3: return 'I';
case 4: return 'D';
default: return 'O';
}
}
void _pn_helper(unsigned level,
void *object,
const char *file,
const char *function,
unsigned line,
const char *fmt,
...)
{
char *tmp;
va_list args;
char l = log_level_to_char(level);
va_start(args, fmt);
tmp = pn_strdup_vprintf(fmt, args);
if (level <= 1)
fprintf(stdout, "%c: %s: %s\n", l, function, tmp);
else if (level == 2)
fprintf(stdout, "%c: %s:%s(%u): %s\n", l, file, function, line, tmp);
else if (level == 3)
fprintf(stdout, "%c: %s: %s\n", l, function, tmp);
#if defined(DEBUG)
else if (level == 4)
fprintf(stdout, "%c: %s:%s(%u): %s\n", l, file, function, line, tmp);
#endif
fflush(stdout);
free(tmp);
va_end(args);
}
|