termlog: Logging for interactive terminals
l := termlog.NewLog() l.Say("Log") l.Notice("Notice!") l.Warn("Warn!") l.Shout("Error!")
Each log entry gets a timestamp.
Groups collect entries together under a single timestamp, with subsequent lines indented:
g = l.Group() g.Say("This line gets a timestamp") g.Say("This line will be indented with no timestamp") g.Done()
Groups produce no output until the .Done() method is called - a good use for defer. Termlog ensures that all grouped entries appear together in output.
Streams associate log entries with a header. New stream log entries only get a header if another log source (i.e. a different stream, group, or plain log) has produced output in the meantime. Each stream log entry gets its own timestamp.
g = l.Stream("This is the header") g.Say("The header will be printed before this line") g.Say("But not before this one") g.Done()
Log entries can be named using the *As methods:
l := termlog.NewLog() l.Say("hello") l.SayAs("debug", "Some debugging info")
Named entries are always silenced, unless they've been enabled specifically, like so:
The package is compatible with the color specifications from github.com/fatih/color, which means that colors can be composed like this:
l.Say("Here are some composed colors...") l.Say( "%s %s %s", color.RedString("red"), color.GreenString("green"), color.BlueString("blue"), )