github.com/slackhq/nebula@v1.9.0/LOGGING.md (about)

     1  ### Logging conventions
     2  
     3  A log message (the string/format passed to `Info`, `Error`, `Debug` etc, as well as their `Sprintf` counterparts) should
     4  be a descriptive message about the event and may contain specific identifying characteristics. Regardless of the
     5  level of detail in the message identifying characteristics should always be included via `WithField`, `WithFields` or
     6  `WithError`
     7  
     8  If an error is being logged use `l.WithError(err)` so that there is better discoverability about the event as well
     9  as the specific error condition.
    10  
    11  #### Common fields
    12  
    13  - `cert` - a `cert.NebulaCertificate` object, do not `.String()` this manually, `logrus` will marshal objects properly
    14    for the formatter it is using.
    15  - `fingerprint` - a single `NebeulaCertificate` hex encoded fingerprint
    16  - `fingerprints` - an array of `NebulaCertificate` hex encoded fingerprints
    17  - `fwPacket` - a FirewallPacket object
    18  - `handshake` - an object containing:
    19      - `stage` - the current stage counter
    20      - `style` - noise handshake style `ix_psk0`, `xx`, etc
    21  - `header` - a nebula header object
    22  - `udpAddr` - a `net.UDPAddr` object
    23  - `udpIp` - a udp ip address
    24  - `vpnIp` - vpn ip of the host (remote or local)
    25  - `relay` - the vpnIp of the relay host that is or should be handling the relay packet
    26  - `relayFrom` - The vpnIp of the initial sender of the relayed packet 
    27  - `relayTo` - The vpnIp of the final destination of a relayed packet
    28  
    29  #### Example:
    30  
    31  ```
    32  l.WithError(err).
    33      WithField("vpnIp", IntIp(hostinfo.hostId)).
    34      WithField("udpAddr", addr).
    35      WithField("handshake", m{"stage": 1, "style": "ix"}).
    36      Info("Invalid certificate from host")
    37  ```