X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=common%2Ftdm_log.c;h=ac7666de2e48dd0fa2f271ed84de66100b12f963;hb=83d1e54bd591e16a6a4529501cbcb2b32a232383;hp=996618d37629731fb2fd2757ca72c8acfc458488;hpb=032f074f78e191b2b29156cd4eddd90ce6f8dc36;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/common/tdm_log.c b/common/tdm_log.c index 996618d..ac7666d 100644 --- a/common/tdm_log.c +++ b/common/tdm_log.c @@ -9,7 +9,7 @@ * Taeheon Kim , * YoungJun Cho , * SooChan Lim , - * Boram Park + * Boram Park * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the @@ -75,38 +75,44 @@ EXTERN void tdm_log_enable_color(unsigned int enable) { color_enable = enable; + TDM_INFO("color_enable: %d", color_enable); } EXTERN void tdm_log_enable_dlog(unsigned int enable) { + const char *str = getenv("TDM_DLOG"); + if (str) + enable = (str[0] == '1') ? 1 : 0; dlog_enable = enable; -} - -EXTERN void -tdm_log_enable_debug(unsigned int enable) -{ - if (enable) - tdm_log_debug_level = TDM_LOG_LEVEL_DBG; - else - tdm_log_debug_level = TDM_LOG_LEVEL_INFO; + TDM_INFO("dlog_enable: %d", dlog_enable); } EXTERN void tdm_log_set_debug_level(int level) { + const char *str = getenv("TDM_DEBUG_LEVEL"); + if (str) + level = str[0] - '0'; tdm_log_debug_level = level; + TDM_INFO("debug_level: %d", tdm_log_debug_level); } EXTERN void tdm_log_set_assert_level(int level) { + const char *str = getenv("TDM_ASSERT_LEVEL"); + if (str) + level = str[0] - '0'; assert_level = level; + TDM_INFO("assert_level: %d", assert_level); } EXTERN void tdm_log_set_path(const char *path) { + TDM_INFO("log_path: %s", path); + if (!path) { if (stdout_fd != -1) { fflush(stdout); @@ -131,7 +137,11 @@ tdm_log_set_path(const char *path) if (stdout_fd == -1) { fflush(stdout); stdout_fd = dup(STDOUT_FILENO); - TDM_RETURN_IF_FAIL(stdout_fd != -1); + if (stdout_fd < 0) { + TDM_ERR("dup failed: %m\n"); + fclose(log_fl); + return; + } } setvbuf(log_fl, NULL, _IOLBF, 512); @@ -140,25 +150,53 @@ tdm_log_set_path(const char *path) close(STDOUT_FILENO); dup2(log_fd, STDOUT_FILENO); fclose(log_fl); + TDM_INFO("log_path: %s done", path); } } -EXTERN void -tdm_log_print(int level, const char *fmt, ...) +static void +_tdm_log_vprint_stdout(int level, const char *fmt, va_list ap) { - va_list arg; - if (!log_lock_init) { log_lock_init = 1; pthread_mutex_init(&log_lock, NULL); - } if (level > tdm_log_debug_level) return; - if (getenv("TDM_DEBUG")) - dlog_enable = 0; + char *lvl_str[] = {"TDM_NON", "TDM_ERR", "TDM_WRN", "TDM_INF", "TDM_DBG"}; + char *color[] = {COLOR_RESET, COLOR_RED, COLOR_YELLOW, COLOR_GREEN, COLOR_RESET}; + + pthread_mutex_lock(&log_lock); + + if (color_enable) + printf("%s", color[level]); + printf("[%s]", lvl_str[level]); + if (color_enable) + printf(COLOR_RESET); + vprintf(fmt, ap); + printf("\n"); + pthread_mutex_unlock(&log_lock); +} + + +EXTERN void +tdm_log_printf(int level, const char *fmt, ...) +{ + va_list arg; + va_start(arg, fmt); + _tdm_log_vprint_stdout(level, fmt, arg); + va_end(arg); +} + +EXTERN void +tdm_log_print(int level, const char *fmt, ...) +{ + va_list arg; + + if (level > tdm_log_debug_level) + return; if (dlog_enable) { log_priority dlog_prio; @@ -182,21 +220,9 @@ tdm_log_print(int level, const char *fmt, ...) __dlog_vprint(LOG_ID_SYSTEM, dlog_prio, LOG_TAG, fmt, arg); va_end(arg); } else { - char *lvl_str[] = {"TDM_NON", "TDM_ERR", "TDM_WRN", "TDM_INF", "TDM_DBG"}; - char *color[] = {COLOR_RESET, COLOR_RED, COLOR_YELLOW, COLOR_GREEN, COLOR_RESET}; - - pthread_mutex_lock(&log_lock); - - if (color_enable) - printf("%s", color[level]); - printf("[%s]", lvl_str[level]); - if (color_enable) - printf(COLOR_RESET); va_start(arg, fmt); - vprintf(fmt, arg); + _tdm_log_vprint_stdout(level, fmt, arg); va_end(arg); - printf("\n"); - pthread_mutex_unlock(&log_lock); } assert(level > assert_level); @@ -205,6 +231,5 @@ tdm_log_print(int level, const char *fmt, ...) EXTERN void tdm_log_reset(void) { - pthread_mutex_trylock(&log_lock); pthread_mutex_unlock(&log_lock); }