Skip to content

Commit c55ff14

Browse files
rama2092jar3m
andauthored
Logger management (#12)
* Enable logger common module * Test Logging code added and enabled all logs by default * Changed logging mechanism Co-authored-by: jar3m <[email protected]>
1 parent 96d5d62 commit c55ff14

4 files changed

Lines changed: 96 additions & 2 deletions

File tree

common/inc/logger.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,24 @@
1+
#ifndef _LOGGER_H
2+
#define _LOGGER_H
3+
4+
#define __LOG_ERROR__ 0
5+
#define __LOG_WARN__ 1
6+
#define __LOG_INFO__ 2
7+
#define __LOG_DEBUG__ 3
8+
#define __LOG_TRACE__ 4
9+
10+
#define MAX_LOG_LEVELS 5
11+
#define MAX_MODULES 4
12+
#define COMMON_MODULE 1
13+
14+
#define LOG_ERROR(mod,fmt, args...) app_log(mod, __LOG_ERROR__, NULL, fmt, ##args)
15+
#define LOG_WARN(mod, fmt, args...) app_log(mod, __LOG_WARN__, NULL, fmt, ##args)
16+
#define LOG_INFO(mod, fmt, args...) app_log(mod, __LOG_INFO__, NULL, fmt, ##args)
17+
#define LOG_DEBUG(mod, fmt, args...) app_log(mod, __LOG_DEBUG__, NULL, fmt, ##args)
18+
#define LOG_TRACE_IN(mod, fmt, args...) app_log(mod, __LOG_TRACE__, NULL, "[++%s:%4d]" fmt"\n", __func__, __LINE__, ##args)
19+
#define LOG_TRACE_OUT(mod, fmt, args...) app_log(mod, __LOG_TRACE__, NULL, "[--%s:%4d]" fmt"\n", __func__, __LINE__, ##args)
120

221
void logger_init();
22+
int app_log(char *module, int level, char *prefix, const char *format, ...);
23+
24+
#endif // End of _LOGGER_H

common/inc/os.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#include <stdio.h>
22
#include <stdlib.h>
33
#include <stdint.h>
4+
#include <stdbool.h>
5+
#include <stdarg.h>
46
#include <string.h>
57
#include <assert.h>
68
#include <pthread.h>
79
#include <signal.h>
10+
#include <sys/time.h>

common/src/logger.c

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,69 @@
11
#include "common.h"
2+
#include "logger.h"
3+
4+
//Array to maintain current log levels to be used
5+
static bool log_level[MAX_LOG_LEVELS] = {false};
6+
static bool module_logs[MAX_MODULES] = {false};
27

38
void logger_init()
49
{
10+
int i;
11+
12+
for (i = 0; i < MAX_LOG_LEVELS; i++) {
13+
log_level[i] = true;
14+
}
15+
516
printf("Logger init\n");
17+
18+
}
19+
20+
int app_log(char *module, int level, char *prefix, const char *format, ...)
21+
{
22+
int len = 0;
23+
va_list args;
24+
25+
va_start(args, format);
26+
27+
if (level < MAX_LOG_LEVELS && log_level[level] == true) {
28+
char time_buff[64];
29+
int millisec;
30+
struct timeval tv;
31+
time_t now = time(0);
32+
33+
gettimeofday(&tv, NULL);
34+
millisec = (tv.tv_usec/1000);
35+
strftime(time_buff, 64, "%H:%M:%S", localtime(&now));
36+
printf("%s.%03d ", time_buff, millisec);
37+
switch (level) {
38+
case __LOG_ERROR__:
39+
printf("[ERR");
40+
break;
41+
case __LOG_WARN__:
42+
printf("[WRN");
43+
break;
44+
case __LOG_INFO__:
45+
printf("[INF");
46+
break;
47+
case __LOG_DEBUG__:
48+
printf("[DBG");
49+
break;
50+
case __LOG_TRACE__:
51+
printf("[TRC");
52+
break;
53+
default:
54+
printf("[UDF");
55+
break;
56+
}
57+
58+
printf(":%s] ",module);
59+
60+
if (prefix != NULL) {
61+
printf("{%s} ", prefix);
62+
}
63+
len = vprintf(format, args);
64+
}
65+
66+
va_end(args);
67+
68+
return len;
669
}

test/src/test.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@
22

33
int main(int argc, char *argv[])
44
{
5-
printf("Hello World\n");
6-
75
logger_init();
6+
7+
LOG_ERROR("COMMON", "Hello World\n");
8+
LOG_WARN("COMMON", "Hello World\n");
9+
LOG_INFO("COMMON", "Hello World\n");
10+
LOG_DEBUG("COMMON", "Hello World\n");
11+
LOG_TRACE_IN("COMMON", "Hello World\n");
12+
LOG_TRACE_OUT("COMMON", "Hello World\n");
13+
814
fault_manager_init(NULL);
915

1016
return 0;

0 commit comments

Comments
 (0)