Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
COREDNS-LOG(7)			 CoreDNS Plugins		  COREDNS-LOG(7)

NAME
     log - enables query logging to standard output.

DESCRIPTION
     By  just  using log you dump all queries (and parts for the reply) on stan-
     dard output. Options exist to tweak the output a little. Note that for busy
     servers logging will incur a performance hit.

     Enabling or disabling the log plugin only affects the  query  logging,  any
     other logging from CoreDNS will show up regardless.

SYNTAX
	    log

     With no arguments, a query log entry is written to stdout in the common log
     format for all requests.  Or if you want/need slightly more control:

	    log [NAMES...] [FORMAT]

     *	 NAMES is the name list to match in order to be logged

     *	 FORMAT  is  the log format to use (default is Common Log Format), {com-
	 mon} is used as a shortcut for the Common Log Format. You can also  use
	 {combined}  for  a  format  that adds the query opcode {>opcode} to the
	 Common Log Format.

     You can further specify the classes of responses that get logged:

	    log [NAMES...] [FORMAT] {
		class CLASSES...
	    }

     *	 CLASSES is a space-separated list of classes of responses  that  should
	 be logged

     The classes of responses have the following meaning:

     *	 success: successful response

     *	 denial:  either  NXDOMAIN  or	nodata responses (Name exists, type does
	 not). A nodata response sets the return code to NOERROR.

     *	 error: SERVFAIL, NOTIMP, REFUSED, etc. Anything that indicates the  re-
	 mote server is not willing to resolve the request.

     *	 all: the default - nothing is specified. Using of this class means that
	 all messages will be logged whatever we mix together with "all".

     If no class is specified, it defaults to all.

LOG FORMAT
     You  can  specify a custom log format with any placeholder values. Log sup-
     ports both request and response placeholders.

     The following place holders are supported:

     *	 {type}: qtype of the request

     *	 {name}: qname of the request

     *	 {class}: qclass of the request

     *	 {proto}: protocol used (tcp or udp)

     *	 {remote}: client's IP address, for IPv6 addresses these are enclosed in
	 brackets: [::1]

     *	 {local}: server's IP address, for IPv6 addresses these are enclosed  in
	 brackets: [::1]

     *	 {size}: request size in bytes

     *	 {port}: client's port

     *	 {duration}: response duration

     *	 {rcode}: response RCODE

     *	 {rsize}:  raw	(uncompressed),  response  size  (a client may receive a
	 smaller response)

     *	 {>rflags}: response flags, each set flag will be displayed,  e.g.  "aa,
	 tc". This includes the qr bit as well

     *	 {>bufsize}: the EDNS0 buffer size advertised in the query

     *	 {>do}: is the EDNS0 DO (DNSSEC OK) bit set in the query

     *	 {>id}: query ID

     *	 {>opcode}: query OPCODE

     *	 {common}: the default Common Log Format.

     *	 {combined}: the Common Log Format with the query opcode.

     *	 {/LABEL}: any metadata label is accepted as a place holder if it is en-
	 closed  between {/ and }, the place holder will be replaced by the cor-
	 responding metadata value or the default value - if label  is	not  de-
	 fined. See the metadata plugin for more information.

     The default Common Log Format is:

	    `{remote}:{port} - {>id} "{type} {class} {name} {proto} {size} {>do} {>bufsize}" {rcode} {>rflags} {rsize} {duration}`

     Each  of  these logs will be outputted with log.Infof, so a typical example
     looks like this:

	    [INFO] [::1]:50759 - 29008 "A IN example.org. udp 41 false 4096" NOERROR qr,rd,ra,ad 68 0.037990251s

ADDITIONAL METADATA
     The log plugin adds the following metadata to allow for granular  differen-
     tiation  of  NOERROR denial vs success messages. These are mapped from plu-
     gin/pkg/response/classify.go and plugin/pkg/response/typify.go.

     *	 {/log/class}: success, denial

     *	 {/log/type}: NODATA, NXDOMAIN, NOERROR

	    . {
		log . "{proto} Request: {name} {type} {/log/class} {/log/type}"
	    }

EXAMPLES
     Log all requests to stdout

	    . {
		log
		whoami
	    }

     Custom log format, for all zones (.)

	    . {
		log . "{proto} Request: {name} {type} {>id}"
	    }

     Only log denials (NXDOMAIN and nodata) for example.org (and below)

	    . {
		log example.org {
		    class denial
		}
	    }

     Log all queries which were not resolved successfully in  the  Combined  Log
     Format.

	    . {
		log . {combined} {
		    class denial error
		}
	    }

     Log all queries on which we did not get errors

	    . {
		log . {
		    class denial success
		}
	    }

     Also  the multiple statements can be OR-ed, for example, we can rewrite the
     above case as following:

	    . {
		log . {
		    class denial
		    class success
		}
	    }

CoreDNS 			   March 2026			  COREDNS-LOG(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=coredns-log&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help