independently, i like the idea of removing urj_log_level_t from
urj_parse_{file,stream}.

as for the rest, i dont think this addresses the last few infos i
posted.  i dont understand why any caller to urj_log ever needs to
prefix "Error:" or "Warning:" to its strings.  it already knows if
something is an error or warning based on the log level passed into
it.

this is what i mean:

--- global/log-error.c  (revision 1948)
+++ global/log-error.c  (working copy)
@@ -70,9 +70,15 @@ urj_do_log (urj_log_level_t level, const

     va_start (ap, fmt);
     if (level < URJ_LOG_LEVEL_WARNING)
-        r = urj_log_state.out_vprintf (fmt, ap);
+    {
+        r = urj_log_state.out_vprintf ("%s: ", urj_log_level_string (level));
+        r += urj_log_state.out_vprintf (fmt, ap);
+    }
     else
-        r = urj_log_state.err_vprintf (fmt, ap);
+    {
+        r = urj_log_state.err_vprintf ("%s: ", urj_log_level_string (level));
+        r += urj_log_state.err_vprintf (fmt, ap);
+    }
     va_end (ap);

     return r;

and then to address your point about the output being too messy with
the file/func/line, we do:

--- include/urjtag/log.h        (revision 1948)
+++ include/urjtag/log.h        (working copy)
@@ -40,7 +40,8 @@ urj_log_state_t;

 extern urj_log_state_t urj_log_state;

-int urj_do_log (urj_log_level_t level, const char *fmt, ...)
+int urj_do_log (urj_log_level_t level, const char *file, size_t line,
+                const char *func, const char *fmt, ...)
 #ifdef __GNUC__
                         __attribute__ ((format (printf, 2, 3)))
 #endif
@@ -49,7 +50,7 @@ int urj_do_log (urj_log_level_t level, c
 #define urj_log(lvl, ...) \
         do { \
             if ((lvl) >= urj_log_state.level) \
-                urj_do_log (lvl, __VA_ARGS__); \
+                urj_do_log (lvl, __FILE__, __LINE__, __func__, __VA_ARGS__); \
         } while (0)

 /**
@@ -59,12 +60,7 @@ int urj_do_log (urj_log_level_t level, c
  * @param ... consists of a printf argument set. It needs to start with a
  *      const char *fmt, followed by arguments used by fmt.
  */
-#define urj_warning(...) \
-    do { \
-        urj_log (URJ_LOG_LEVEL_WARNING, "%s:%d %s() Warning: ", \
-                 __FILE__, __LINE__, __func__); \
-        urj_log (URJ_LOG_LEVEL_WARNING, __VA_ARGS__); \
-    } while (0)
+#define urj_warning(...) urj_log (URJ_LOG_LEVEL_WARNING, __VA_ARGS__)

 /**
  * Convert the named level into the corresponding urj_log_level_t.
--- src/global/log-error.c      (revision 1948)
+++ src/global/log-error.c      (working copy)
@@ -60,7 +60,8 @@ stdout_vprintf(const char *fmt, va_list
 }

 int
-urj_do_log (urj_log_level_t level, const char *fmt, ...)
+urj_do_log (urj_log_level_t level, const char *file, size_t line,
+            const char *func, const char *fmt, ...)
 {
     va_list ap;
     int r;
@@ -69,10 +70,19 @@ urj_do_log (urj_log_level_t level, const
         return 0;

     va_start (ap, fmt);
+    r = 0;
     if (level < URJ_LOG_LEVEL_WARNING)
-        r = urj_log_state.out_vprintf (fmt, ap);
+    {
+        if (urj_log_state.level < URJ_LOG_LEVEL_DETAIL)
+            r = urj_log_state.out_vprintf (fmt, "%s:%i %s(): ", file,
line, func);
+        r += urj_log_state.out_vprintf (fmt, ap);
+    }
     else
-        r = urj_log_state.err_vprintf (fmt, ap);
+    {
+        if (urj_log_state.level < URJ_LOG_LEVEL_DETAIL)
+            r = urj_log_state.out_vprintf (fmt, "%s:%i %s(): ", file,
line, func);
+        r += urj_log_state.err_vprintf (fmt, ap);
+    }
     va_end (ap);

     return r;
-mike

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
UrJTAG-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/urjtag-development

Reply via email to