From: Pranav Batra <batrapranav@chromium.org>

Add address resolution logging messages to help debug b/172217141.

Both dbus (avahi-client) and socket (avahi-daemon) requests are logged.
Programs such as CUPS use gethostbyname() for host name resolution.
The glibc gethostbyname() function calls the nss-mdns plugin which sends
a RESOLVE-ADDRESS request to the avahi-daemon via socket to obtain the
ip address.

TL;DR
CUPS -> gethostbyname() -> mdns_minimal -> avahi-daemon -> avahi-core
avahi-resolve -> avahi-client -> avahi-core
See https://www.avahi.org/doxygen/html/ for more information.

--- a/avahi-core/resolve-address.c
+++ b/avahi-core/resolve-address.c
@@ -29,6 +29,7 @@
 #include <avahi-common/domain.h>
 
 #include "browse.h"
+#include "log.h"
 
 #define TIMEOUT_MSEC 5000
 
@@ -63,12 +64,17 @@ static void finish(AvahiSAddressResolver *r, AvahiResolverEvent event) {
     }
 
     switch (event) {
+        char addr[AVAHI_ADDRESS_STR_MAX];
+        avahi_address_snprint(addr, sizeof(addr), &r->address);
         case AVAHI_RESOLVER_FAILURE:
+            avahi_log_warn("Failed to resolve address %s", addr);
             r->callback(r, r->interface, r->protocol, event, &r->address, NULL, r->flags, r->userdata);
             break;
 
         case AVAHI_RESOLVER_FOUND:
             assert(r->ptr_record);
+            // There are several DNS resource record types.
+            avahi_log_info("Found record for %s", addr);
             r->callback(r, r->interface, r->protocol, event, &r->address, r->ptr_record->data.ptr.name, r->flags, r->userdata);
             break;
     }
--- a/avahi-core/resolve-host-name.c
+++ b/avahi-core/resolve-host-name.c
@@ -63,6 +63,7 @@ static void finish(AvahiSHostNameResolver *r, AvahiResolverEvent event) {
 
     switch (event) {
         case AVAHI_RESOLVER_FOUND: {
+
             AvahiAddress a;
 
             assert(r->address_record);
@@ -81,6 +82,9 @@ static void finish(AvahiSHostNameResolver *r, AvahiResolverEvent event) {
                 default:
                     abort();
             }
+            char addr[AVAHI_ADDRESS_STR_MAX];
+            avahi_address_snprint(addr, sizeof(addr), &a);
+            avahi_log_info("Resolved hostname %s: %s", r->host_name, addr);
 
             r->callback(r, r->interface, r->protocol, AVAHI_RESOLVER_FOUND, r->address_record->key->name, &a, r->flags, r->userdata);
             break;
@@ -88,7 +92,7 @@ static void finish(AvahiSHostNameResolver *r, AvahiResolverEvent event) {
         }
 
         case AVAHI_RESOLVER_FAILURE:
-
+            avahi_log_warn("Failed to resolve hostname %s", r->host_name);
             r->callback(r, r->interface, r->protocol, event, r->host_name, NULL, r->flags, r->userdata);
             break;
     }
--- a/avahi-core/resolve-service.c
+++ b/avahi-core/resolve-service.c
@@ -79,7 +79,7 @@ static void finish(AvahiSServiceResolver *r, AvahiResolverEvent event) {
 
     switch (event) {
         case AVAHI_RESOLVER_FAILURE:
-
+            avahi_log_warn("Failed to resolve service %s (type: %s, domain: %s)", r->service_name, r->service_type, r->domain_name);
             r->callback(
                 r,
                 r->interface,
@@ -119,6 +119,9 @@ static void finish(AvahiSServiceResolver *r, AvahiResolverEvent event) {
                     default:
                         assert(0);
                 }
+                char addr[AVAHI_ADDRESS_STR_MAX];
+                avahi_address_snprint(addr, sizeof(addr), &a);
+                avahi_log_info("Resolved service %s (type: %s, domain: %s): %s", r->service_name, r->service_type, r->domain_name, addr);
             }
 
             r->callback(
