summaryrefslogtreecommitdiff
path: root/toxcore
diff options
context:
space:
mode:
Diffstat (limited to 'toxcore')
-rw-r--r--toxcore/logger.c19
-rw-r--r--toxcore/logger.h14
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
150char* logger_timestr(char* dest) 145char* 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);
45const char* logger_stringify_level(LoggerLevel level); 45const char* logger_stringify_level(LoggerLevel level);
46unsigned logger_get_pid(); 46unsigned logger_get_pid();
47void logger_write (LoggerLevel level, const char* format, ...); 47void logger_write (LoggerLevel level, const char* format, ...);
48char* logger_timestr (char* dest); 48char* 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)