]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/commitdiff
Implement cleaner logging approach.
authorSimon Ruderich <simon@ruderich.org>
Thu, 18 Aug 2011 23:53:52 +0000 (01:53 +0200)
committerSimon Ruderich <simon@ruderich.org>
Thu, 18 Aug 2011 23:53:52 +0000 (01:53 +0200)
src/log.c
src/log.h
src/tlsproxy.c
src/verify.c

index dd7c90cac69e681ac8b4cf656198766c2cc0091d..a703c1cc536b283d143227adb2bdae071374ded7 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -26,7 +26,7 @@
 #include <pthread.h>
 
 
-void log_message(int level, const char *format, ...) {
+void log_message(int level, const char *file, int line, const char *format, ...) {
     va_list ap;
     const char *level_string;
 
@@ -35,13 +35,19 @@ void log_message(int level, const char *format, ...) {
     }
 
     switch (level) {
-        case LOG_ERROR:   level_string = "ERROR"; break;
-        case LOG_WARNING: level_string = "WARN "; break;
-        case LOG_DEBUG:   level_string = "DEBUG"; break;
-        default:          level_string = "UNKNOWN";
+        case LOG_ERROR_LEVEL:   level_string = "ERROR"; break;
+        case LOG_WARNING_LEVEL: level_string = "WARN "; break;
+        case LOG_DEBUG_LEVEL:   level_string = "DEBUG"; break;
+        default:                level_string = "UNKNOWN";
     }
 
     va_start(ap, format);
+#if DEBUG
+    fprintf(stdout, "%-12s:%-3d ", file, line);
+#else
+    (void)file;
+    (void)line;
+#endif
     fprintf(stdout, "[%s] [%d] ", level_string, (int)pthread_self());
     vfprintf(stdout, format, ap);
     fprintf(stdout, "\n");
index 041f45318076b1816a04e2f2352980eb6868956d..54ce597fcdd6cadad936e8377dfbfcef2e82b746 100644 (file)
--- a/src/log.h
+++ b/src/log.h
 #ifndef LOG_H
 #define LOG_H
 
+/* Log constants to be used with LOG() and LOG_PERROR() macros. */
+#define LOG_ERROR   LOG_ERROR_LEVEL,   __FILE__, __LINE__
+#define LOG_WARNING LOG_WARNING_LEVEL, __FILE__, __LINE__
+#define LOG_DEBUG   LOG_DEBUG_LEVEL,   __FILE__, __LINE__
+
 /* Log level constants. */
-#define LOG_ERROR   0
-#define LOG_WARNING 1
-#define LOG_DEBUG   2
+#define LOG_ERROR_LEVEL   0
+#define LOG_WARNING_LEVEL 1
+#define LOG_DEBUG_LEVEL   2
 
-/* Helper macro for LOG/LOG_PERROR. Print file/line number if compiled with
- * debug output. */
-#ifdef DEBUG
-#define LOG_PRINT_LOCATION fprintf(stdout, "%-12s:%-3d ", __FILE__, __LINE__);
-#else
-#define LOG_PRINT_LOCATION
-#endif
 /* Call log_message() and print current file and line number. */
 #define LOG \
-    LOG_PRINT_LOCATION \
     log_message
 /* perror() replacement with debug level support. */
 #define LOG_PERROR(level, message) \
-    LOG_PRINT_LOCATION \
     log_message(level, "%s: %s", message, strerror(errno))
 
 
-void log_message(int level, const char *format, ...);
+void log_message(int level, const char *file, int line, const char *format, ...);
 
 #endif
index 625ed0803e93fc05d96bed988d85c98c052e79b5..3fa03e3b4065f8b67fd8956d0367a031228bca4e 100644 (file)
@@ -169,7 +169,7 @@ int main(int argc, char **argv) {
     }
 
     /* Fast rebinding for debug mode, could cause invalid packets. */
-    if (LOG_DEBUG <= global_log_level) {
+    if (LOG_DEBUG_LEVEL <= global_log_level) {
         int socket_option = 1;
         setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR,
                    &socket_option, sizeof(socket_option));
@@ -197,7 +197,7 @@ int main(int argc, char **argv) {
         return EXIT_FAILURE;
     }
 
-    if (LOG_DEBUG <= global_log_level) {
+    if (LOG_DEBUG_LEVEL <= global_log_level) {
         printf("Listening for connections on port %d.\n", port);
 
         if (NULL != global_proxy_host && NULL != global_proxy_port) {
@@ -266,9 +266,9 @@ static void parse_arguments(int argc, char **argv) {
     /* Default values. */
     thread_count = 10;
 #ifdef DEBUG
-    global_log_level = LOG_DEBUG;
+    global_log_level = LOG_DEBUG_LEVEL;
 #else
-    global_log_level = LOG_WARNING;
+    global_log_level = LOG_WARNING_LEVEL;
 #endif
     global_passthrough_unknown = 0;
 
index 8328432b5e27e0174590c0c69cb97e92fc36c608..5248dd6cd243dff33609066f3da00c0c3a6bf5ce 100644 (file)
@@ -176,9 +176,15 @@ int server_certificate_path(FILE **file, const char *hostname,
     /* Open the stored certificate file. */
     *file = fopen(path, "rb");
     if (NULL == *file) {
-        LOG(global_passthrough_unknown ? LOG_DEBUG : LOG_WARNING,
-            "server_certificate_path(): failed to open '%s': %s",
-            path, strerror(errno));
+        if (global_passthrough_unknown) {
+            LOG(LOG_DEBUG,
+                "server_certificate_path(): failed to open '%s': %s",
+                path, strerror(errno));
+        } else {
+            LOG(LOG_WARNING,
+                "server_certificate_path(): failed to open '%s': %s",
+                path, strerror(errno));
+        }
         /* Couldn't open the file, special case. */
         return -2;
     }