I need to log relatively heavy JSON data within the web request handler. Does the logrus use blocking I/O? Should I call the logger.WithFields(fields).Info(heavy_message)
in a separate goroutine?
https://github.com/sirupsen/logrus/blob/79c5ab66aa2ce7d9ff7b3c437ebc22fcc519a967/entry.go#L221-L262 it looks like it is blocking i/o, so yes - you should call it in a goroutine.