EMULATOR_PDP_11
STEPIC Учебный проект на 'С', эмулятор PDP_11 в стиле ООП
Loading...
Searching...
No Matches
logger.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CLR_PRINT_RESULT   "\x1b[37m"
 
#define CLR_ERROR   "\x1b[31m"
 
#define CLR_INFO   "\x1b[32m"
 
#define CLR_WARNING   "\x1b[33m"
 
#define CLR_TRACE   "\x1b[94m"
 
#define CLR_DEBUG   "\x1b[36m"
 
#define CLR_RESET   "\x1b[0m"
 
#define PRINT_RESULT(fmt, ...)    log_message(PRINT_RESULT, fmt, ##__VA_ARGS__)
 
#define ERROR(fmt, ...)   log_message(ERROR, fmt, ##__VA_ARGS__)
 
#define INFO(fmt, ...)   log_message(INFO, fmt, ##__VA_ARGS__)
 
#define WARNING(fmt, ...)   log_message(WARNING, fmt, ##__VA_ARGS__)
 
#define TRACE(fmt, ...)   log_message(TRACE, fmt, ##__VA_ARGS__)
 
#define DEBUG(fmt, ...)   log_message(DEBUG, fmt, ##__VA_ARGS__)
 

Enumerations

enum  log_level_t {
  PRINT_RESULT = 0 , ERROR , INFO , WARNING ,
  TRACE , DEBUG
}
 

Functions

void log_message (log_level_t, const char *,...)
 
log_level_t set_log_level (log_level_t)
 

Macro Definition Documentation

◆ CLR_DEBUG

#define CLR_DEBUG   "\x1b[36m"

◆ CLR_ERROR

#define CLR_ERROR   "\x1b[31m"

◆ CLR_INFO

#define CLR_INFO   "\x1b[32m"

◆ CLR_PRINT_RESULT

#define CLR_PRINT_RESULT   "\x1b[37m"

◆ CLR_RESET

#define CLR_RESET   "\x1b[0m"

◆ CLR_TRACE

#define CLR_TRACE   "\x1b[94m"

◆ CLR_WARNING

#define CLR_WARNING   "\x1b[33m"

◆ DEBUG

#define DEBUG (   fmt,
  ... 
)    log_message(DEBUG, fmt, ##__VA_ARGS__)

◆ ERROR

#define ERROR (   fmt,
  ... 
)    log_message(ERROR, fmt, ##__VA_ARGS__)

◆ INFO

#define INFO (   fmt,
  ... 
)    log_message(INFO, fmt, ##__VA_ARGS__)

◆ PRINT_RESULT

#define PRINT_RESULT (   fmt,
  ... 
)     log_message(PRINT_RESULT, fmt, ##__VA_ARGS__)

◆ TRACE

#define TRACE (   fmt,
  ... 
)    log_message(TRACE, fmt, ##__VA_ARGS__)

◆ WARNING

#define WARNING (   fmt,
  ... 
)    log_message(WARNING, fmt, ##__VA_ARGS__)

Enumeration Type Documentation

◆ log_level_t

Enumerator
PRINT_RESULT 
ERROR 
INFO 
WARNING 
TRACE 
DEBUG 
4 {
5 PRINT_RESULT = 0,
6 ERROR,
7 INFO,
9 TRACE,
10 DEBUG
#define ERROR(fmt,...)
Definition logger.h:36
#define TRACE(fmt,...)
Definition logger.h:39
log_level_t
Definition logger.h:4
#define INFO(fmt,...)
Definition logger.h:37
#define DEBUG(fmt,...)
Definition logger.h:40
#define WARNING(fmt,...)
Definition logger.h:38
#define PRINT_RESULT(fmt,...)
Definition logger.h:34

Function Documentation

◆ log_message()

void log_message ( log_level_t  level,
const char *  fmt,
  ... 
)
12{
13
14 const char *levels[]
15 = { "PRINT_RESULT", "ERROR", "INFO", "WARNING", "TRACE", "DEBUG" };
16 const char *level_colors[] = { CLR_PRINT_RESULT, CLR_ERROR, CLR_INFO,
18
19 // Если уровень сообщения выше текущего
20 // порога, игнорируем его
21 if (level > current_log_level) {
22 return;
23 }
24 // Получение текущего времени
25 time_t now = time(NULL);
26 struct tm *t = localtime(&now);
27 char time_str[20];
28 strftime(time_str, sizeof(time_str), "%H:%M:%S", t);
29
30 // Печать префикса уровня
31 // printf("[%s] ", levels[level]);
32 // printf("%s[%s]\t[%s] [%s:%d] %s(): ", level_colors[level],
33 // levels[level],
34 // time_str, file, line, func);
35 if (level == 0) {
36 printf("%s", level_colors[level]);
37 } else {
38 printf("\n%s[%s]: ", level_colors[level], levels[level]);
39 }
40
41 // Обработка переменного числа аргументов
42 va_list args;
43 va_start(args, fmt);
44 vprintf(fmt, args);
45 va_end(args);
46 printf(CLR_RESET "\n");
47 return;
48}
log_level_t current_log_level
Definition logger.c:7
#define CLR_PRINT_RESULT
Definition logger.h:13
#define CLR_RESET
Definition logger.h:19
#define CLR_WARNING
Definition logger.h:16
#define CLR_DEBUG
Definition logger.h:18
#define CLR_INFO
Definition logger.h:15
#define CLR_TRACE
Definition logger.h:17
#define CLR_ERROR
Definition logger.h:14

◆ set_log_level()

log_level_t set_log_level ( log_level_t  level)
52{
53 // Установка нового порогового и возврат
54 // предыдущего значения logger;
56 current_log_level = level;
57 return old_level;
58}