How do I structure logs with fields using zap in Go?

To structure logs with fields using the zap logging library in Go, you can create a logger instance and use its methods to log messages along with key-value pairs. This allows for more contextual logging that can be easily searched and filtered.

package main import ( "go.uber.org/zap" ) func main() { // Create a logger instance logger, _ := zap.NewProduction() defer logger.Sync() // flushes buffer, if any // Structured logging with fields logger.Info("User logged in", zap.String("username", "johndoe"), zap.Int("userID", 123), ) logger.Warn("User attempted unauthorized access", zap.String("username", "johndoe"), zap.String("endpoint", "/admin"), ) }

keywords: Go zap logging structured logging key-value pairs