diff options
Diffstat (limited to 'toxcore')
-rw-r--r-- | toxcore/logger.c | 19 | ||||
-rw-r--r-- | toxcore/logger.h | 14 |
2 files changed, 14 insertions, 19 deletions
diff --git a/toxcore/logger.c b/toxcore/logger.c index ff9146d4..933e8d4b 100644 --- a/toxcore/logger.c +++ b/toxcore/logger.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "config.h" | 25 | #include "config.h" |
26 | #endif /* HAVE_CONFIG_H */ | 26 | #endif /* HAVE_CONFIG_H */ |
27 | 27 | ||
28 | |||
29 | #include "logger.h" | 28 | #include "logger.h" |
30 | 29 | ||
31 | #ifdef LOGGING | 30 | #ifdef LOGGING |
@@ -96,7 +95,7 @@ int logger_init(const char* file_name, LoggerLevel level) | |||
96 | sprintf(final_l, "%s"/*.%u"*/, file_name, logger_get_pid()); | 95 | sprintf(final_l, "%s"/*.%u"*/, file_name, logger_get_pid()); |
97 | 96 | ||
98 | if ( logger.log_file ) { | 97 | if ( logger.log_file ) { |
99 | fprintf(stderr, "Error opening logger name: %s with level %d: %s!\n", final_l, level, strerror(errno)); | 98 | fprintf(stderr, "Error opening logger name: %s with level %d: file already opened!\n", final_l, level); |
100 | free (final_l); | 99 | free (final_l); |
101 | return -1; | 100 | return -1; |
102 | } | 101 | } |
@@ -104,19 +103,15 @@ int logger_init(const char* file_name, LoggerLevel level) | |||
104 | logger.log_file = fopen(final_l, "ab"); | 103 | logger.log_file = fopen(final_l, "ab"); |
105 | 104 | ||
106 | if ( logger.log_file == NULL ) { | 105 | if ( logger.log_file == NULL ) { |
107 | char error[1000]; | 106 | fprintf(stderr, "Error opening logger file: %s; info: %s\n", final_l, strerror(errno)); |
108 | if ( strerror_r(errno, error, 1000) == 0 ) | 107 | |
109 | fprintf(stderr, "Error opening logger file: %s; info: %s\n", final_l, error); | ||
110 | else | ||
111 | fprintf(stderr, "Error opening logger file: %s\n", final_l); | ||
112 | |||
113 | free (final_l); | 108 | free (final_l); |
114 | return -1; | 109 | return -1; |
115 | } | 110 | } |
116 | 111 | ||
117 | 112 | ||
118 | logger.level = level; | 113 | logger.level = level; |
119 | logger.start_time = current_time(); | 114 | logger.start_time = current_time_monotonic(); |
120 | 115 | ||
121 | 116 | ||
122 | time_t tim = time(NULL); | 117 | time_t tim = time(NULL); |
@@ -147,10 +142,10 @@ void logger_write (LoggerLevel level, const char* format, ...) | |||
147 | fflush(logger.log_file); | 142 | fflush(logger.log_file); |
148 | } | 143 | } |
149 | 144 | ||
150 | char* logger_timestr(char* dest) | 145 | char* logger_timestr(char* dest, size_t max_size) |
151 | { | 146 | { |
152 | uint64_t diff = (current_time() - logger.start_time) / 1000; /* ms */ | 147 | uint64_t diff = (current_time_monotonic() - logger.start_time); /* ms */ |
153 | sprintf(dest, "%"PRIu64"", diff); | 148 | snprintf(dest, max_size, "%"PRIu64"", diff); |
154 | 149 | ||
155 | return dest; | 150 | return dest; |
156 | } | 151 | } |
diff --git a/toxcore/logger.h b/toxcore/logger.h index d8292f31..0b6367c5 100644 --- a/toxcore/logger.h +++ b/toxcore/logger.h | |||
@@ -45,7 +45,7 @@ int logger_init(const char* file_name, LoggerLevel level); | |||
45 | const char* logger_stringify_level(LoggerLevel level); | 45 | const char* logger_stringify_level(LoggerLevel level); |
46 | unsigned logger_get_pid(); | 46 | unsigned logger_get_pid(); |
47 | void logger_write (LoggerLevel level, const char* format, ...); | 47 | void logger_write (LoggerLevel level, const char* format, ...); |
48 | char* logger_timestr (char* dest); | 48 | char* logger_timestr (char* dest, size_t max_size); |
49 | 49 | ||
50 | #if defined(_WIN32) || defined(__WIN32__) || defined (WIN32) | 50 | #if defined(_WIN32) || defined(__WIN32__) || defined (WIN32) |
51 | #define _SFILE (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) | 51 | #define _SFILE (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) |
@@ -53,16 +53,16 @@ char* logger_timestr (char* dest); | |||
53 | #define _SFILE (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) | 53 | #define _SFILE (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | #define WRITE_FORMAT(__LEVEL__, format) char* the_str = calloc(sizeof(char), strlen(format)+ 500); sprintf(the_str, "\n[%u] [%s] [%s] [%s:%d %s()] %s", \ | 56 | #define WRITE_FORMAT(__LEVEL__, format) char __time__[20]; char* the_str = calloc(sizeof(char), strlen(format)+ 500); sprintf(the_str, "\n[%u] [%s] [%s] [%s:%d %s()] %s", \ |
57 | logger_get_pid(), logger_stringify_level(__LEVEL__), logger_timestr(__time__), _SFILE, __LINE__, __func__, format) | 57 | logger_get_pid(), logger_stringify_level(__LEVEL__), logger_timestr(__time__, 20), _SFILE, __LINE__, __func__, format) |
58 | 58 | ||
59 | /* Use these macros */ | 59 | /* Use these macros */ |
60 | 60 | ||
61 | #define LOGGER_INIT(name, level) logger_init(name, level); | 61 | #define LOGGER_INIT(name, level) logger_init(name, level); |
62 | #define LOGGER_INFO(format, ...) do { char __time__[20]; WRITE_FORMAT(INFO, format); logger_write( INFO, the_str, ##__VA_ARGS__ ); free(the_str); } while (0) | 62 | #define LOGGER_INFO(format, ...) do { WRITE_FORMAT(INFO, format); logger_write( INFO, the_str, ##__VA_ARGS__ ); free(the_str); } while (0) |
63 | #define LOGGER_DEBUG(format, ...) do { char __time__[20]; WRITE_FORMAT(DEBUG, format); logger_write( DEBUG, the_str, ##__VA_ARGS__ ); free(the_str); } while (0) | 63 | #define LOGGER_DEBUG(format, ...) do { WRITE_FORMAT(DEBUG, format); logger_write( DEBUG, the_str, ##__VA_ARGS__ ); free(the_str); } while (0) |
64 | #define LOGGER_WARNING(format, ...) do { char __time__[20]; WRITE_FORMAT(WARNING, format); logger_write( WARNING, the_str, ##__VA_ARGS__ ); free(the_str); } while (0) | 64 | #define LOGGER_WARNING(format, ...) do { WRITE_FORMAT(WARNING, format); logger_write( WARNING, the_str, ##__VA_ARGS__ ); free(the_str); } while (0) |
65 | #define LOGGER_ERROR(format, ...) do { char __time__[20]; WRITE_FORMAT(ERROR, format); logger_write( ERROR, the_str, ##__VA_ARGS__ ); free(the_str); } while (0) | 65 | #define LOGGER_ERROR(format, ...) do { WRITE_FORMAT(ERROR, format); logger_write( ERROR, the_str, ##__VA_ARGS__ ); free(the_str); } while (0) |
66 | 66 | ||
67 | /* To do some checks or similar only when logging use this */ | 67 | /* To do some checks or similar only when logging use this */ |
68 | #define LOGGER_SCOPE(__SCOPE_DO__) do { __SCOPE_DO__ } while(0) | 68 | #define LOGGER_SCOPE(__SCOPE_DO__) do { __SCOPE_DO__ } while(0) |