diff --git a/lib/log.c b/lib/log.c
index 8a7e5f3..4afe922 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -774,7 +774,8 @@
  * provided otherwise.
  */
 const char *
-mes_lookup (const struct message *meslist, int max, int index, const char *none)
+mes_lookup (const struct message *meslist, int max, int index,
+  const char *none, const char *mesname)
 {
   int pos = index - meslist[0].key;
   
@@ -797,13 +798,13 @@
 	  {
 	    const char *str = (meslist->str ? meslist->str : none);
 	    
-	    zlog_debug ("message index %d [%s] found in position %d (max is %d)",
-		      index, str, i, max);
+	    zlog_debug ("message index %d [%s] found in %s at position %d (max is %d)",
+		      index, str, mesname, i, max);
 	    return str;
 	  }
       }
   }
-  zlog_err("message index %d not found (max is %d)", index, max);
+  zlog_err("message index %d not found in %s (max is %d)", index, mesname, max);
   assert (none);
   return none;
 }
diff --git a/lib/log.h b/lib/log.h
index 1f9a689..ee34a4a 100644
--- a/lib/log.h
+++ b/lib/log.h
@@ -146,12 +146,12 @@
 extern int zlog_rotate (struct zlog *);
 
 /* For hackey massage lookup and check */
-#define LOOKUP(x, y) mes_lookup(x, x ## _max, y, "(no item found)")
+#define LOOKUP(x, y) mes_lookup(x, x ## _max, y, "(no item found)", #x)
 
 extern const char *lookup (const struct message *, int);
 extern const char *mes_lookup (const struct message *meslist, 
                                int max, int index,
-                               const char *no_item);
+                               const char *no_item, const char *mesname);
 
 extern const char *zlog_priority[];
 extern const char *zlog_proto_names[];
