gitlab.com/gitlab-org/labkit@v1.21.0/log/examples_test.go (about) 1 package log_test 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "gitlab.com/gitlab-org/labkit/log" 8 ) 9 10 func ExampleInitialize() { 11 // Initialize the global logger 12 closer, err := log.Initialize( 13 log.WithFormatter("json"), // Use JSON formatting 14 log.WithLogLevel("info"), // Use info level 15 log.WithOutputName("stderr"), // Output to stderr 16 ) 17 defer closer.Close() 18 log.WithError(err).Info("This has been logged") 19 20 // Example of configuring a non-global logger using labkit 21 myLogger := log.New() // New logrus logger 22 closer2, err := log.Initialize( 23 log.WithLogger(myLogger), // Tell logkit to initialize myLogger 24 log.WithFormatter("text"), // Use text formatting 25 log.WithLogLevel("debug"), // Use debug level 26 log.WithOutputName("/var/log/labkit.log"), // Output to `/var/log/labkit.log` 27 ) 28 defer closer2.Close() 29 30 log.WithError(err).Info("This has been logged") 31 } 32 33 func ExampleAccessLogger() { 34 handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 35 fmt.Fprintf(w, "Hello world") 36 }) 37 38 // This func is used by WithExtraFields to add additional fields to the logger 39 extraFieldGenerator := func(r *http.Request) log.Fields { 40 return log.Fields{"header": r.Header.Get("X-Magical-Header")} 41 } 42 43 http.ListenAndServe(":8080", 44 log.AccessLogger(handler, // Add accesslogger middleware 45 log.WithExtraFields(extraFieldGenerator), // Include custom fields into the logs 46 log.WithFieldsExcluded(log.HTTPRequestReferrer|log.HTTPUserAgent), // Exclude user-agent and referrer fields from the logs 47 ), 48 ) 49 }