void tdm_log_enable_color(unsigned int enable);
void tdm_log_enable_dlog(unsigned int enable);
-void tdm_log_enable_debug(unsigned int enable);
void tdm_log_set_debug_level(int level);
void tdm_log_set_assert_level(int level);
void tdm_log_set_path(const char *path);
+void tdm_log_print_stdout(int level, const char *fmt, ...);
void tdm_log_print(int level, const char *fmt, ...);
+
void tdm_log_reset(void);
extern unsigned int tdm_log_debug_level;
if (tdm_log_debug_level >= TDM_LOG_LEVEL_DBG) { \
struct timespec ts; \
clock_gettime(CLOCK_MONOTONIC, &ts); \
- tdm_log_print(TDM_LOG_LEVEL_DBG, "[%5d.%06d][%d][%s %d]"fmt"\n", \
+ tdm_log_print(TDM_LOG_LEVEL_DBG, "[%5d.%06d][%d][%s %d]"fmt, \
(int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
(int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \
} \
if (tdm_log_debug_level >= TDM_LOG_LEVEL_INFO) { \
struct timespec ts; \
clock_gettime(CLOCK_MONOTONIC, &ts); \
- tdm_log_print(TDM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d]"fmt"\n", \
+ tdm_log_print(TDM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d]"fmt, \
(int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
(int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \
} \
if (tdm_log_debug_level >= TDM_LOG_LEVEL_WRN) { \
struct timespec ts; \
clock_gettime(CLOCK_MONOTONIC, &ts); \
- tdm_log_print(TDM_LOG_LEVEL_WRN, "[%5d.%06d][%d][%s %d]"fmt"\n", \
+ tdm_log_print(TDM_LOG_LEVEL_WRN, "[%5d.%06d][%d][%s %d]"fmt, \
(int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
(int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \
} \
if (tdm_log_debug_level >= TDM_LOG_LEVEL_ERR) { \
struct timespec ts; \
clock_gettime(CLOCK_MONOTONIC, &ts); \
- tdm_log_print(TDM_LOG_LEVEL_ERR, "[%5d.%06d][%d][%s %d]"fmt"\n", \
+ tdm_log_print(TDM_LOG_LEVEL_ERR, "[%5d.%06d][%d][%s %d]"fmt, \
(int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
(int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \
} \